欢迎光临
我们一直在努力

Java 零基础入门:一文搞懂数据类型和变量

📚 目录

  • 1. 字面常量
  • 2.数据类型
  • 3.变量
  • 3.1整型变量
  • 3.2长整型变量
  • 3.3短整型变量
  • 3.4字节型变量
  • 3.5为什么Java中要有这么多数据类型?
  • 3.6浮点型变量
  • 3.7字符型变量
  • 3.8布尔类型变量
  • 3.9字符串类型变量

前言:
  从0开始学习Java,今天是学习Java的第四天。
  很多刚接触 Java 的同学,一开始都会被 “数据类型”“变量” 这些名词吓到。其实它们并没有想象中那么复杂。
  作为 Java 入门的第一步,今天我们就从最基础的变量和数据类型开始,一步步搞懂它们是什么、怎么用、为什么要这么用。看完这篇,你就能轻松写出自己的第一个 Java 变量。


1. 字面常量

  什么是字面常量?   常量:程序在运行过程中固定不变的量,叫做常量;(就好比我们生活中一天24小时,一年12个月,一周7天,在外我们生活中固定不变的量)   像我们在学习C语言过程中在屏幕上面打印一个字符串"hello world"一样;这个字符串就是我们的字面常量。 如:

public class test1 {
public static void main(String[] args) {
System.out.println("hello world");
System.out.println('a');
System.out.println("haha");
System.out.println(100);
System.out.println(100.15);
System.out.println(true);
System.out.println(false);
}
}

  这就是我们的字面常量。 在这里插入图片描述 字符串常量:   由 " “括起来的,就比如"hello world”、“haha” 整型常量:   程序中我们直接写的数字(没有小数点) 浮点数常量:   程序中直接写小数的(比如:3.14、88.8) 字符常量:   由 ’ '括起来的单个字符(比如: ‘A’、‘a’) 布尔常量:   只有两种:false和true 空常量:   null

🔙 返回目录


2. 数据类型

   我们Java中也给我们提供了几种数据类型: 在这里插入图片描述   一共8种数据类型。但需要我们注意的是Java中和C语言中存在一些差别:   整数和浮点数都是有符号的。   整型默认为int类型。   无论在多少位平台int都是占4个字节。(字节;计算机中表示内存空间内大小的基本单位)   字符串属于引用类型。

🔙 返回目录


3. 变量

  什么是变量?   从名字上我们能够简单的知道变量就是能够改变的量。   变量:在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。 定义变量的语法格式:

数据类型+变量名字 = 初始值

例如:

public class test1 {
public static void main(String[] args) {

int a = 1;//在Java中=表示赋值,和C语言中一样。
char b ='b';/
double c =1.0;
//当然我们也能直接定义多个变量如:int a,b,c;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

在这里插入图片描述


整型变量:

public class test1 {
public static void main(String[] args) {
//定义时给了初始值
int a = 1;
System.out.println(a);
//定义时未给出初始值
int b;
//后续也能赋值
b = 10;
System.out.println(b);

}
}

在这里插入图片描述   当我们使用前没有赋值会怎么样呢?

public class test1 {
public static void main(String[] args) {
int b;
System.out.println(b);

}
}

结果如下: 在这里插入图片描述   就会发生报错。 当我们定义的值超出了int 能够表示的范围的时候就会发生以下这种情况。

public class test1 {
public static void main(String[] args) {
int b = 1122334455667788;
System.out.println(b);

}
}

在这里插入图片描述   就会发生这样的情况。我们可以知道int的范围。

public class test1 {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}

在这里插入图片描述   是一个21亿的数字。 注意:   不管什么系统下int类型都是4个字节。   当我们不知道这个变量要设置什么值时,我们可以设置位0。   定义大小的时候不能够超出他的范围。   变量使用前必须要赋值,否则编译器会报错。   int的包装类型位Integer。

🔙 返回目录


长整型变量:

  如果给我们5年的时间,我们赚够21亿多的钱,那么多余的钱放哪里呢?   Java中给我们提供了一个更大的类型就是我们的long类型。

public class test1 {
public static void main(String[] args) {

//两种定义长整型的方式
long a = 10l;//不建议使用这种,因为有些字体会讲1和l混在一起,不容易区分。
long b = 10L;//容易区分1和L。
}
}

所能表示的范围:

public class test1 {
public static void main(String[] args) {

System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);

}
}

在这里插入图片描述   那么给你5年的时间你能赚到这么多钱吗? 注意事项:   长整型变量初始化的值后面加 L或者l (不推荐小写)。   长整型不论什么系统都是8个字节。   长整型的包装类型位Long。

🔙 返回目录


短整型变量:

  既然有我们的长整型变量和整型变量,那肯定也有我们的短整型变量啊。 短整型变量的创建和范围:

public class test1 {
public static void main(String[] args) {

short a = 10;
System.out.println(a);
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
}
}

在这里插入图片描述 注意:   短整型变量在任何的平台下面都是占2个字节。   在初始化的时候不要超出范围。   包装类型:Short

🔙 返回目录


字节型变量

  什么是字节型变量?   字节型变量:占用一个字节,在存储的过程中使用8个比特位进行存储,最高位是符号位,其他位为数值位。 字节型变量的创建和初始化以及范围:

public class test1 {
public static void main(String[] args) {

byte a = 10;//字节型变量的创建
System.out.println(a);
//范围:
System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);

}
}

在这里插入图片描述   字节型变量在任何系统下都是占用一个字节。   初始化时不要超出范围。   包装类型:Byte


为什么Java中要有这么多种数据类型?

  原因很简单,就是为了充分利用系统内存空间,加强对内存空间的利用率。 在这里插入图片描述

  试想一下:如果一个1m8的人穿1m5的人的衣服,是不是有可能穿不下,或者说太挤了。反正一个1m5的人穿一件很大的衣服,这不就相当于当裙子来穿了吗?就和我们穿衣服一样,这就是为什么Java中要有这么多种数据类型。

🔙 返回目录


浮点型变量:

  浮点型变量又分为单精度浮点型和双精度浮点型。

双精度浮点型:

public class test1 {
public static void main(String[] args) {

double a = 3.15;
System.out.println(a);
}
}

  我们知道:C语言中1/2 等于0,那么Java中会不会得到0.5呢?

public class test1 {
public static void main(String[] args) {

System.out.println(1/2);
}
}

在这里插入图片描述

  结果还是0。   在Java中int类型的数据相除得到的数值还是int类型。   想要得到0.5我们要使用double类型的数据。

public class test1 {
public static void main(String[] args) {
double a = 1;
double b = 2;
System.out.println(a/b);
}
}

在这里插入图片描述   那如果是1.1乘1.1呢?

public class test1 {
public static void main(String[] args) {
System.out.println(1.1*1.1);
}
}

在这里插入图片描述   结果得到的是我们的1.21(浮点数在计算机中是不能够精确保存的) 注意:   double类型在任何系统下都是8个字节。   浮点数与整数在内存中的存储⽅式不同,不能单纯使用的形式来计算   包装类型:Double   double类型遵守IEEE754标准(和C语言一样)尝试使用有限的内存空间表示可能无线的小数,势必会存在⼀定的精度误差,因此浮点数是个近似值,并不是精确值。

🔙 返回目录


单精度浮点型:

public class test1 {
public static void main(String[] args) {
float a =1.1f;//一种形式
// float a =1.1F;//这种形式也行
System.out.println(a);
}
}

在这里插入图片描述 注意:   float类型在初始化的时候要在后面加F或者f;编译器默认小数位double类型。   float类型也遵守IEEE754标准(和C语言一样)尝试使用有限的内存空间表示可能无线的小数,势必会存在⼀定的精度误差,因此浮点数是个近似值,并不是精确值。

🔙 返回目录


字符型变量

创建方法以及初始化:

public class test1 {
public static void main(String[] args) {
char a = 'a';
char b = '1';
char c = '美';
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

在这里插入图片描述 注意:   字符型变量需要 ’ '括起来   字符本质上位数字,在C语言中使用ASCII表示字符,而Java中用Unicode表示字符,因此⼀个字符占用两个字节,表示的字符种类更多,包括中文.   封装类型:Character   那字符变量有没有最大值呢?答案:有

public class test1 {
public static void main(String[] args) {
System.out.println(Character.MAX_VALUE);
System.out.println(Character.MIN_VALUE);
}
}

在这里插入图片描述

  只不过为我们的不可打印字符。

🔙 返回目录


布尔类型变量

  布尔类型变量我们常用来表示:真和假,也就是true和false 布尔类型变量的创建和初始化。

public class test1 {
public static void main(String[] args) {
boolean a = false;
boolean b = true;
System.out.println(a);
System.out.println(b);
}
}

在这里插入图片描述 注意:   布尔类型变量只有两种取值:true和false。   在Java中布尔类型不能和int类型相互转换。   与C语言不同的是,Java中布尔类型不是非0即为真。

🔙 返回目录


类型转换

  自动类型转(隐式)换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。

public class test1 {
public static void main(String[] args) {

int a =100;
long b = 10L;
b = a;//自动转换
}
}

  强制类型转换(显式)

public class test1 {
public static void main(String[] args) {

int a =10;
long b =1;
b = (long)a;//强制类型转换
byte c =100;
c = (byte)266;//默认为int类型,需要我们强制转换
}
}

注意:   不同类型数字之间赋值,范围小的能自动转换为范围大的。   当范围大的转换为范围小的时候,可能会丢失数据。   在我们Java中在赋值的时候,Java会自动检查我们赋值的数字是否在范围内。   不相干的类型不能相互转换。如:布尔类型和整型

🔙 返回目录


类型提升

public class test1 {
public static void main(String[] args) {

int a = 10;
long b = 20;
// int c = a + b;int + long–> long + long赋值给int时会丢失
long d = a + b;
}
}

public class test1 {
public static void main(String[] args) {
byte a =10;
byte b =20;
byte c =a+b;//报错
System.out.println(c);
}
}

结论:   byte和byte是相同类型,但是他们相加的时候会将byte类型提升为int类型,后进行计算,得到的结果也是int类型。所以编译器会报错。   在我们的计算机中CPU通常是按照4个字节4个字节读取数据的,硬件上为了实现方便,会将低于4个字节类型整型提升为4个字节进行计算。    正确写法:

public class test1 {
public static void main(String[] args) {
byte a =10;
byte b =20;
byte c =(byte)(a+b);//报错
System.out.println(c);
}
}

在这里插入图片描述

🔙 返回目录


字符串类型变量:

public class test1 {
public static void main(String[] args) {
String a = "hello";
String b = "world";
System.out.println(a);
System.out.println(b);
}
}

在这里插入图片描述

  那这段代码呢?

public class test1 {
public static void main(String[] args) {
String a = "hello";
String b = "world";
System.out.println(a+b);
}
}

  字符串也能相加? 在这里插入图片描述   结果告诉我们:字符串能够相加,只不过在Java中字符串这种加法我们叫 拼接。   那这种呢?

public class test1 {
public static void main(String[] args) {
int ch = 10;
int pf = 20;
String a = "hello";
String b = "world";
System.out.println(a+b+ch+pf);
}
}

  这种呢?

public class test1 {
public static void main(String[] args) {
int ch = 10;
int pf = 20;
String a = "hello";
String b = "world";
System.out.println(ch+pf+a+b);
}
}

在这里插入图片描述

  脑子是不是又是很大的疑问? 在这里插入图片描述   为什么????   为什么前面是30而后面是拼接在一起?   原因:前面30是因为编译器会认为前面的10+20是两个整型相加,而和后面字符串就是拼接。   后面helloworld1020是因为编译器会将前面的hello和world进行拼接,因为他们为字符串,而拼接完和后面的10再进行拼接,编译器会认为前面是字符串,后面是整型,任然进行拼接,拼接完的helloworld10任然是字符串和后面的20进行拼接。      好了我们今天的课堂就到这里了,下期见!

🔙 返回目录


赞(0)
未经允许不得转载:171主机测评 » Java 零基础入门:一文搞懂数据类型和变量
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址