一.字面常量
在最简单的程序中的
System.out.println("hello");
中的"hello"就是字面常量
常量就是程序运行期间,固定不变的量,比如一年十二个月等
字母常量的分类:
1.字符串常量:由""括起来的,比如”1234"吗,"你好"。
2.整形常量:程序中直接写的数字(注意没用小数点),比如:100,1000。
3.浮点数类型:程序中直接写的小数,比如:3.14,0.49.
4.字符常量:由''括起来的单个字符,比如'A','1'。
5.布偶类型:只有两种true和false
6.空类型:null
这些在Java中都被称为数据类型
二.数据类型
Java中数据类型主要分为两类:基本数据类型和引用数据类型。
基本数据类型有四类八种:
四类:整型,浮点型,字符型以及布尔型
八种:
注:
不论是16位系统还是32位系统,int都占四个字节,long都占八个字节
整形和浮点型都是带有符号的
整形默认为int型,浮点型默认为double
字符串属于引用类型
什么是字节?
字节是计算机中表示空间大小的基本单位
计算机使用二进制表示数据,我们认为八个二进制位(bit)为一个字节(byte)
单位:bit 8- byte 1024- kb 1024- gb 1024-tb 1024-pb
三.变量
变量就是可以改变的量,比如人的体重年龄。
1.语法格式
数据类型 变量名=初始值;
2.长整形
long
为了区分int和long类型,一般建议long类型变量后面的初始值后加L或者l(推荐+L)
long A=10L
长整形不管哪个系统下都占8个字节
长整形的表示范围为:-2^63~(2^63)-1
long的包装类型为Long
最大值和最小值:
3.短整形
short在任何系统下都占两个字节
short的包装类型为Short
4.字节型
byte的包装类型为Byte
5.浮点型变量
1.双精度浮点型double(八个字节)
double b=3.14;
注意:两个int相除结果不会是小数,只有浮点型计算才会出现小数
double的包装类型为Double
double类型的内存布局遵守IEEE 754标准(和C语言一样),尝试使用有限的空间表示可能无限的小数,势必会存在一定的误差,因此浮点数是个近似值,并不是精确值
2.单精度浮点型float
float num = 1.0f;//写作1.0F也行
float类型在Java中占4个字节,同样遵守IEEE 754标准,由于表示的数据精度范围较小,一般在工程上用到浮点数都考虑double
float的包装类型为Float
6.字符型变量
char a = '帅';
计算机中的字符本质上是一个整数,在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文
char的包装类型是Character
7.布尔型变量
常用来表示真假
boolean b=true;
System.out.println(b);
b=false;
System.out.println(b);
注:
boolean类型的变量只有两种取值,true表示真,false表示假。
Java的boolean类型和int不能相互转换,不存在1表示true,0表示false的用法
boolean类型没用明确规定的大小
boolean的包装类型是Boolean
8.类型转换
Java是一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有较为严格的校验
int a=10;
long b=100L;
b=a; //可以通过编译
a=b; //编译失败
在Java中,当参与运算的数据类型不一样时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式)和强制类型转换(显式)
1.自动类型转换(隐式)
代码不需要任何处理,编译时编译器会自动处理。
特点:数据范围小的转为数据范围大的时候会自动进行
System.out.println(1024); //整形默认情况下是int
System.out.println(3.14); //浮点型默认情况下是double
2.强制类型转换(显式)
特点:数据范围大的到数据范围小的
int a=10;
long b=100L;
b=a; //int -> long 数据范围由小到大,隐式转换
a=(int)b; //long->int 数据范围由大到小,需要强转,否则编译失败
double d=5.12;
a=d; //报错,类型不兼容
a=(int)d //int没用double表示的数据范围大,需要强转,小数点后全丢弃
byte b1=100; //100默认为int,没用超过byte范围,隐式转换
byt b2=(byte)257 //157默认为int,超过byte范围,需要显式转换,否则报错
boolean flag=true;
a=flag //编译失败,类型不兼容
9.类型提升
不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的
1.int与long之间:int会被提升为long
2.byte与byte的运算
由于计算机的cpu通常是按照4个字节为单位从内存中读写数据,为了硬件上的方便
小于四个字节的类型,会提升为int类型再参与运算
比如
a和b都会变成int,得到的结果也是int
小结:
1.不同类型的数据混合运算,范围小的会提升为范围大的
2.对于short,byte这种比四个字节小的类型,会先提升成四个字节的int再计算
四.字符串类型
Java中使用String类定义字符串类型,比如:
在有些情况下,需要将字符串和数字之间进行转换:
1.int转换成String
int num=10;
//方法一
String str1=num+""; // 这里的+是拼接的意思,就是num拼接上""里面的字符串
//方法二
String str2=String.valueOf(num);
2.String转换成int
String str="100";
int num=integer.parselnt(str);