如果不是天能天生丽质
就要做到天生励志
目录
1.常量
2.数据类型
3.变量
3.1 认识变量
3.2 变量的赋值
3.3 整型家族变量
3.4浮点型家族变量
3.5字符型变量
3.6 布尔型变量
4.类型转换
4.1 认识类型转换
4.2 隐式类型转换
4.3 强制类型转换
4.4 类型提升
5.字符串类型
5.1认识字符串
5.2 int 转换为 String
5.3 String 转换为 int
常量:程序运行期间,固定不变的量称为常量
常量按数据类型分类:
① 整型常量:程序中直接写的数字(没有小数点),就是整型常量。整型常量又可以分为: 二进制、八进制、十进制、十六进制 的整型常量。二进制的整型常量是由 0 和 1 构成,一般前面会加 0b 或者 0B ;八进制的整型常量是由 0~7 的数字构成,一般前面会加 0;十进制一般由 1~9 的数字构成,没有前缀;十六进制的整型常量是由0~9 A~F构成,一般前面加上 0x 或 0X。
public class Test {
public static void main(String[] args) {
System.out.println("二进制:"+0b11101);
System.out.println("八进制:"+011101);
System.out.println("十进制:"+11101);
System.out.println("十六进制:"+0x11101);
}
}
上述代码通过十进制打印后的结果:
为什么都是11101最后打印出来的结果不一样咧?
答:因为进制不一样所以转换成十进制也就不一样
② 浮点数常量:程序中直接写的小数,就是浮点数常量。浮点型常量又可以分为 double 双精度浮点型 和 float 单精度浮点型。要是在小数后面加了 d 或 D 就表示双精度浮点型,要是在小数后面加了 f 或 F 就表示单精度浮点型,要是在程序中直接写的 小数 没有加 后缀 默认是双精度浮点型。其中 单精度浮点型 还可以用指数形式来表示。
public class Test {
public static void main(String[] args) {
System.out.println(3.14);
System.out.println(3.14d);
System.out.println(3.14f);
System.out.println(3e12);
}
}
③ 字符常量:由 单引号 ' ' 括起来的单个字符,就是字符常量。转义字符也属于字符常量。
public class Test {
public static void main(String[] args) {
System.out.println('a');
System.out.println('\n');
}
}
④ 字符串常量::由 " " 括起来的,就是字符串常量。" " 里面一个字符都没有的长度就是0,里面要是有一个空格那么长度就是 1。
public class Test {
public static void main(String[] args) {
System.out.println("abc");
}
}
⑤ 布尔常量:布尔常量是用来表示真假的,只有两个值一个是 true 表示真,还有一个是 false 表示假。
public class Test {
public static void main(String[] args) {
System.out.println(false);
System.out.println(true);
if(true) {
System.out.println(true);
} else {
System.out.println(false);
}
}
}
⑥ 空常量: 空常量表示对象引用为空,只有一个值 null。
常量还可以从表现形式上进行分类:
① 字面值常量:就是看得这个常量就知道值
② 符号常量:就是用符号表示的常量,看得这个符号之后去找这个符号的值就能知道值了,通常要用 final 来定义这样一个符号常量
public class Test {
public static void main(String[] args) {
final int a = 10;
}
}
在 Java 中数据类型主要分为两类:基本数据类型 和 引用数据类型。
基本数据类型又可以分为:四类 八种
四类 八种:
public class Test {
public static void main(String[] args) {
byte a = 10;
short b = 10;
int c = 10;
long d = 10;
double e = 10.0;
float f = 10.0f;
char g = 'g';
boolean h = true;
}
}
上面代码中数据类型不一样,它们所占空间大小也就不一样,取值范围也不一样
为什么会有数据类型?
答:其实各种编程语言都有数据类型,不同编程语言的数据类型也是大同小异的,都是为了使用适合的空间。如果存储的数据只需要一个很小的数据空间,而选择了一个大的数据空间,就会造成空间的浪费。要是存储的数据需要一个很大的数据空间,而选择了一个小的数据空间,那就存储不下。
变量:在运行过程中,其值可以改变的量就是变量
定义变量的语法格式: 数据类型 变量名 = 初始值;
public class Test {
public static void main(String[] args) {
int a = 10;
System.out.println(a);
a = 100;
System.out.println(a);
}
}
代码解析:定义了一个变量,类型是 int(整型),变量名是 a,初始值是 10 ,此时 变量 a 中存储的是 10 ,打印 a ,则打印的是 10。因为 a 是变量,所以给 a 赋值为 100, 此时变量 a 中存储的则是 100,打印 a,则打印的是 100。
1.定义时赋初始值
public class Test {
public static void main(String[] args) {
int a = 10;
System.out.println(a);
}
}
2.先定义后赋值
public class Test {
public static void main(String[] args) {
int a ;
a = 10;
System.out.println(a);
}
}
注意:必须在使用前赋值,否则程序直接报错。建议使用第一种方法,如果不知道赋什么值可以先赋值为 0
1.字节型变量
public class Test {
public static void main(String[] args) {
byte a = 10;
System.out.println(a);
System.out.println("最大值:"+Byte.MIN_VALUE);
System.out.println("最小值:"+Byte.MAX_VALUE);
}
}
2.短整型变量
public class Test {
public static void main(String[] args) {
short a = 10;
System.out.println(a);
System.out.println("最小值:"+Short.MIN_VALUE);
System.out.println("最大值:"+Short.MAX_VALUE);
}
}
3.整型变量
public class Test {
public static void main(String[] args) {
short a = 10;
System.out.println(a);
System.out.println("最大值:"+Integer.MIN_VALUE);
System.out.println("最小值:"+Integer.MAX_VALUE);
}
}
4.长整型变量
public class Test {
public static void main(String[] args) {
long a = 10L;//一般在长整型变量初始值后面加上大写的 L ,方便与 ing 区分
System.out.println(a);
System.out.println("最小值:"+Long.MIN_VALUE);
System.out.println("最大值:"+Long.MAX_VALUE);
}
}
byte、short、int、long都可以定义整型变量,为什么要给出 4 种不同类型呢?
答:因为存储空间大小的不同,所以为了更加合理化分配空间就把整型又细分成了4种不同的类型 。就好比如碗的大小一样,为什么碗又分为大碗和小碗了,要是有一个小朋友来你家吃饭,我们会给他用小碗,因为如果用大碗,他根本吃不了那么多的饭,就会造成空间浪费。要是有一个大人来你家吃饭,我们会给他用大碗,因为如果用小碗,他根本吃不饱,就会造成空间不足。
1.双精度浮点型
public class Test {
public static void main(String[] args) {
double a = 2.0;
System.out.println(a);
System.out.println("最小值:"+Double.MIN_VALUE);
System.out.println("最大值:"+Double.MAX_VALUE);
}
}
注:
整型 / 整型 != 小数:整型除以整型不可能得到一个小数
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a / b);
}
}
如果想要结果得要小数则有两种方法:
①.在整型/整型之前,先乘以一个小数,这样就可以让一个整型提升为浮点型
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a * 1.0 / b );
}
}
②.类型设置为浮点型:
public class Test {
public static void main(String[] args) {
double a = 1.0;
double b = 2.0;
System.out.println(a / b );
}
}
2.单精度浮点型
public class Test {
public static void main(String[] args) {
float a = 1.0f;
System.out.println(a);
System.out.println("最小值:"+Float.MIN_VALUE);
System.out.println("最大值:"+Float.MAX_VALUE);
}
}
public class Test {
public static void main(String[] args) {
char a = 'a';
char b = '哈';
System.out.println(a);
System.out.println(b);
}
}
public class Test {
public static void main(String[] args) {
boolean a = true;
if (a) {
System.out.println("真");
} else {
System.out.println("假");
}
}
}
类型转换:顾名思义就是将一个类型转换为另一个类型。
Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验
将把一个双精度类型的值赋给一个整型时程序将会直接报错。
将把一个双精度类型的值转换为整型,然后赋给一个整型时程序将通过。
这就是类型转换的功能,将把一个值赋值给一个不同的类型变量时,就需要类型转换。
类型转换可以分为:隐式类型转换 和 强制类型转换。
隐式类型转换又称为自动类型转换:数据范围小的转为数据范围大的时候,代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。
public class Test {
public static void main(String[] args) {
int a = 10;
long b = 20;
b = a;//自动类型转换
System.out.println(b);
}
}
当数据范围大的转为数据范围小的时候,编译器则不会自动处理,则会直接报错
当数据范围大的转为数据范围小的时候,我们则需要用到强制类型转换
强制类型转换:当数据范围大的转为数据范围小的时候,编译器则不会自动处理,此时我们则需要自己去转换,由用户自己转换的就叫做强制类型转换。
public class Test {
public static void main(String[] args) {
int a = 10;
long b = 20;
a = (int) b;//强制类型转换
System.out.println(a);
}
}
类型提升:不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的
① 数据类型小的 与 数据类型大的进行运算
当一个 整型 和 长整型 进行运算时,整型会被提升为长整型然后进行运算。
上述代码中 a + b ---》int + long ---》long + long 赋值给 int 时会丢失数据,编译时会报错。
上述代码 a + b ---》int + long ---》long + long 赋值给 long,则编译成功。
② 低于4个字节的数据类型进行的运算
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。
上述代码中 a + b ---》short + short ---》int + int 赋值给 short 时会丢失数据,编译时会报错
上述代码 a + b ---》short + short ---》int + int 赋值给 int,则编译成功。
字符串属于引用类型
public class Test {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "def";
System.out.println(str1);
System.out.println(str2);
System.out.println(str1 + str2);
}
}
方法一:整型变量 + 双引号
public class Test {
public static void main(String[] args) {
int a = 1;
String str = a + "";
System.out.println(str);
}
}
方法二:用 String 包装类
public class Test {
public static void main(String[] args) {
int a = 1;
String str = String.valueOf(a);
System.out.println(str);
}
}
直接用 Integer 包装类
public class Test {
public static void main(String[] args) {
String str = "100";
int a = Integer.parseInt(str);
System.out.println(a);
}
}