记录一些Java的基础知识,方便自己查看,各位要是有需要也可以copy一下。
本期笔记的内容有:基本数据类型、基本数据类型之间的运算规则。
public class lianxi01 {
public static void main(String[] args) {
/*
基本数据类型:
1)整数型:
类型:byte 占用存储空间:1字节 = 8bit位 表述范围:-128 ~ 127
类型:short 占用存储空间:2字节 表述范围:-2^15次方 ~ 2^15次方-1
类型:int 占用存储空间:4字节 表述范围:-2^31次方 ~ 2^31次方-1(约21亿)
类型:long 占用存储空间:8字节 表述范围:-2^63次方 ~ 2^63次方-1
2)浮点型:
类型:float(单精度) 占用存储空间:4字节 表述范围:-3.403E38 ~ 3.403E38(既:3.403乘以10的38次方) 精度:7位有效数
类型:double(双精度) 占用存储空间:8字节 表述范围:-1.798E308 ~ 1.798E308(既:1.798乘以10的308次方) 精度:14位有效数
3)字符型:
类型:char 占用存储空间:1字符 = 2字节 表述范围:-2^63次方 ~ 2^63次方-1
4)布尔型:
类型:boolean
引用数据类型:
1)、类(class) 注:字符串在类里
2)、接口(interface)
3)、数组([])
*/
byte a1 = 1;
short a2 = 2;
int a3 = 3;
//声明long型变量时,必须以“l”或“L”结尾。
long a4 = 4L;
System.out.println(a1); //输出结果1
System.out.println(a2); //输出结果2
System.out.println(a3); //输出结果3
System.out.println(a4); //输出结果4
//声明float型变量时,必须以“f”或“F”结尾。
float b1 = 1.02F;
double b2 = 2.03;
System.out.println(b1); //输出结果1.02
System.out.println(b2); //输出结果2.03
//声明char型变量时,用''单引号,内部只能写一个字符。
//可以直接使用Unicode值来表示字符型常量。
char c1 = 'a';
char c2 = '\u0043';
System.out.println(c1); //输出结果a
System.out.println(c2); //输出结果C
//布尔型boolean只能取true和false。
boolean d1 = true;
System.out.println(d1); //输出结果true
/*
基本数据类型之间的运算规则:
前提:这里只议论是7种基本数据类型变量间的运算,不包含boolran类型的。
1)自动类型提升:
①当容量小的数据类型的变量与容量打的数据类型的变量做运算是,结果会自动提升为容量大的数据类型。
②当byte、short、char三种类型的变量做运算时,结果均为int型。
byte、short、char --> int --> long --> float --> double
2)强制类型转换:
一般情况:自动类型提升的逆运算。
①需要使用强转符:()
②注意点:强制类型转换,可能会导致精度损失。
说明:此时的容量大小指的是,表示数的范围的大和小,比如:float容量要大于long的容量。
*/
byte aa1 = 2;
int i1 = 123;
//byte aa2 = aa1 + i1; //此时编译不通过,因为int型不可降级为byte型。
int i2 = aa1 + i1; //编译通过,byte型的变量"aa1"自动转换成int型。
System.out.println(i2); //输出结果125
//手动空格,CSDN编译器没办法自动识别空格
float f = i1 + i2; //编译通过,int型的变量"i1"、"i2"自动转换成float型。
System.out.println(f); //输出结果248.0
//手动空格,CSDN编译器没办法自动识别空格
char cc1 = 'a';
int i3 = 10;
int i4 = cc1 + i3; //字符类型的变量"cc1"中的'a'转换为ASCII码中对应的值。
System.out.println(i4); //输出结果107
//手动空格,CSDN编译器没办法自动识别空格
double dd1 = 12.3;
int i5 = (int)dd1; //截断操作,将double类型变量“dd1”强制转换成int类型,但该操作会损失精度。
System.out.println(i5); //输出结果12
//手动空格,CSDN编译器没办法自动识别空格
long l1 = 123;
short ss1 = (short)l1; //因为两个都为整数类型,所以不会造成精度损失。
System.out.println(ss1); //输出结果123
//手动空格,CSDN编译器没办法自动识别空格
int i6 = 128;
byte b = (byte)i6; //截断操作,因为byte类型的范围最大为127,128超出范围,转换后只能得到-128,精度损失。
System.out.println(b); //输出结果-128
//手动空格,CSDN编译器没办法自动识别空格
/*
String类型变量的使用:
1)String属于引用数据类型,翻译为:字符串
2)声明String类型变量时,使用一对""双引号
3)String可以和8种基本数据类型变量做运算,且运算只能是连接运算
4)运算的结果仍然是String类型
*/
String s1 = "Hello World!";
String s2 = "a";
String s3 = ""; //定义了一个空的字符串
System.out.println(s1); //输出结果Hello World!
System.out.println(s2); //输出结果a
System.out.println(s3); //输出结果
//手动空格,CSDN编译器没办法自动识别空格
int number = 1001;
String nuberStr = "学号:";
String info = nuberStr + number; //连接运算
System.out.println(info); //输出结果 学号:1001
//练习:
char C = 'a'; //a的ASCII码为97,A的ASCII码为65
int num = 10;
String str = "hello";
System.out.println(C + num + str); //连接运算107hello
System.out.println(C + str + num); //连接运算ahello10
System.out.println(C + (num + str)); //连接运算a10hello
System.out.println((C + num) + str); //连接运算107hello
System.out.println(str + num + C); //连接运算hello10a
}
}