数据类型
-
强类型语言:安全性比较高,但是速度比较慢。
-
java数据类型:
- 基本类型
- 引用类型
-
整数、小数、是非对错、其他类型
-
整数:根据大小分为以下几类
-
小数:根据大小分为以下几类,4个字节范围跟整数4个字节范围一致,8个字节范围跟整数8个字节范围一致,一般用double
重点
- 整数;定义long的时候会在后边加上一个大写的L
- 浮点数:float后面必须加一个F
//整数的4种表达方式 //int:-2147483648~2147483647 //最常用 int num1=10; //byte:-128~127 byte num2=127; //short:-32768~32767 short num3=26526; //long:8个字节,定义long的时候会在后边加上一个大写的L long num4=30L;
//小数、浮点数 //float后面必须加一个F float num5=50.1F; double num6=3.14159265464364513654613;
快捷键:ctrl+左键是注释
字节和位
32位和64位的寻址能力不一样:64位可以128G,32位4G
进制
//整数拓展:二进制0b 八进制0 十进制 十六进制0x
int i=10;
int i2=010;//八进制0
int i3=0x10;//十六进制0x 0~9 A~F 16
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
//输出结果
10
8
16
Process finished with exit code 0
浮点数拓展
//浮点数拓展
//BigDecimal 数学工具类
//float有限 离散 舍入误差 大约,接近,但不等于
//double
//最好完全使用浮点数进行比较
float f=0.1f; //0.1
double d=1.0/10; //0.1
System.out.println(f==d);//false
System.out.println(f);
System.out.println(d);
float d1=2312332325333f;
float d2=d1+1;
System.out.println(d1==d2);//true
//输出结果
false
0.1
0.1
true
字符拓展
//字符拓展
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换
字符转换成数字
//所有的字符本质还是数字
//编码
// Unicode 表:(97=a 65=A)//2字节 0-65536
//U000 UFFFF
// Excel 2的16次方=65536
char c3='\u0061';
System.out.println(c3);//a
转义字符
//转义字符
// \t 制表符
// \n 换行
//还有更多,自己去搜索...
System.out.println("Hello\tWorld");
//输出结果
Hello World
面向对象接触
String sa=new String("hello world");
String sb=new String("hello world");
System.out.println(sa==sb);
String sc="hello world";
String sd="hello world";
System.out.println(sc==sd);
//输出结果
false
true
布尔值扩展
//布尔值扩展
boolean flag=true;
if(flag==true){} //新手
if(flag){} //老手
//Less is more
类型转换
-
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
-
运算中,不同类型的数据先转换位同一类型,然后进行运算。
-
小数的优先级一定大于整数
-
大转小强制转换,小转大自动转换
int i=128;
double c=i;//128
byte b=(byte)i;//内存溢出//-128
//强制转换 (类型)变量名
//自动转换 低-高
System.out.println(i);
System.out.println(b);
/*
注意点:
1.不能把布尔值进行转换
2.不能把对象类型转换成不相干的类型
3.在把高容量转换成低容量的时候,强制转换
4.在转换的时候可能存在内存溢出,或者精度问题!
*/
System.out.println("------------------------------");
System.out.println((int)23.7); //23
System.out.println((int)-23.7f); //-23
System.out.println("------------------------------");
char e='a';
int f=e+1;
System.out.println(f); //98
System.out.println((char)f); //b
注意溢出问题
//操作比较大的数时,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割,而且下划线不会输出
int money=10_0000_0000;
int years=20;
int total=money*years; //-1474836480,计算时溢出了
long total2=money*years;//默认是int,转换之前就已经存在问题了
System.out.println(total);
long total3=money*((long)years);//20000000000
System.out.println(total3);
//由于小写的l与1相像,所以尽量用大写的L表示