基础知识回顾01(自用)
自用主要是因为自己写的自己容易理解一点,因为写的很乱,表达的不是很好。(看的视频是b站狂神的,有直接截得代码图,然后我整理了一点点,还有很多漏的),大家看的时候有啥建议可以提哈(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。
程序运行机制
数据类型
强类型语言
- 要求变量的使用要严格符合规定,所有的变量都必须先定义后使用
弱类型语言
Java的数据类型分为两大类
-
基本类型(primitive type)
位(bit):是计算机 内部数据储存的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
1B(byte,字节)=8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
1024B=1KB
1024KB=1M
1024M=1G
1024G=1TB
-
引用类型(reference type)
- 实例
其中字符串String不属于基本数据类型,String是final修饰的Java类,属于引用类型。
数据类型扩展
整数扩展
整数扩展:(进制) 二进制0b 十进制 八进制0 十六进制0x
注意:这里的是数字0,不是字母o
public static void main(String[] args){
int a = 10;
int b = 010;//八进制0
int c = 0x10;//十六进制0x
System.out.println(a);//10
System.out.println(b);//8
System.out.println(c);//17
}
浮点数扩展
浮点数扩展:float double
public static void main(String[] args){
float a = 0.1F;
double b = 1.0/10;
System.out.println(a==b);//比较结果false
System.out.println(a);//0.1
System.out.println(b);//0.1
//float类型:单精度浮点数,有限的离散数据,舍入误差,指数范围有限(-127~128)。一般在cpu中处理单精度float要比double快。
float c = 23232345454567F;
float d = c+1;
System.out.println(c==d);//比较结果true
}
字符类扩展
字符类扩展:所有的字符本质还是数字
编码Unicode表,占2字节。
public static void main(String[] args){
char a = 'a';
char b = '中';
System.out.println(a);//a
System.out.println(int)a);//97,强制转换Unicode表中对应的数字
System.out.println(b);//中
System.out.println((int)a);//20013,同上
//转义字符
// \t 制表符,空格
// \n 换行
System.out.println("Hello\tworld!");
System,out.println("Hello\nworld");
}
布尔值扩展
boolean flag = true;
一般新手是这样写if(flag == true){}
老手是if(flag){}
//总之就是代码学到后面就需要开始精简代码,以最少的代码量完成最多的需求
类型转换
类型转换
其中,小数的优先级高于整数。
public static void main(String[] args){
int i = 128;
byte b = (byte)i;
System.out.println(i);//128
System.out.println(b);//-128,内存溢出
//强制转换 (类型)变量名 高到低
//自动转换 低到高
double a = i;
char c = 'a';
int d = c+1;
System.out.println(d);//98(a的对应Unicode数值为97)
System.out.println((char)d);//b
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
*/
//精度问题
System.out.println((int)13.7);//13,精度丢失
System.out.println((int)-45.73f);//-45
}
JDK7新特性
JDK7新特性,数字之间可以用下划线分割
操作较大的数值时,注意溢出问题
public static void main(String[] args){
int money = 10_0000_0000;//10亿,下划线分割,提高效率
int years = 20;
int total = money*yeas;
Long total_one = money*yeas;//先计算再转换了,默认是int,转换long之前相乘时就已经出错存在问题
Long total_two = money*(Long)yeas;//200亿,答案正确
System.out.println(total);//-1474836480,计算时溢出
//Long long,L l ,容易出错,养成大写的习惯
}