java文件的运行逻辑:
hello.java --编译--》hello.class --运行--》jvm
相对路径:从当前目录生产的一个路径绝对。 ..\ (表示当前目录的上一级文件)
API文档:在线API手册 - 码工具 (matools.com)
数据类型与转化:
整数型[byte 1个字节][short 2个字节][int 4个字节][long 8个字节]
int i=1L;这样是错的,因为编译器会先因为int占用4个字节,结果结尾加L,表示为long,是更大的存储类型,所以冲突了。
1byte=8bit
浮点型[float 4个字节][double 8个字节]
浮点数=符号位+指数位+尾数位(尾数部分可能丢失)
java中浮点类型默认是double。
float num=1.1F;(F为转化到float类型,如果不转化就是错的)
double num=11.1f(大容器装小的,也是对的)
通常使用double类型
double num=8.1/3 输出时是一个接近2.7的小数如2.66666666669
所以对整除运算后的比较尽量不要用相等去判断,正确写法if(Math.abs(a1/3-a2)<0.0001)
字符型[char 2个字节]
字符只能单引号,字符串用双引号。
布尔型[1个字节]
boolean i=true;java中不可以用0或非0的整数代替false和true。这和c语言不同。
数据类型的转化
自动类型转化
两条自动转化的路线
1.多种数据类型一起算,我直接转化到最大的类型 float d1=n1 +1.1;//错误,因为右边1.1默认是double类型了,比较大,右边全转成了double,自然不可赋值给float。
2.byte,short不可和char自动相互转化
3.byte,short,char可以计算,会先全部转为int然后再算。
4.boolean 是不参与转化的
强制类型转化
细节1:
int n1=(int)1.9;//输出为1,精度下降
细节2:
int x= (int)10*3.5;//报错,因为只就近转化了10,但是没有转化3.5实际为double数据类型,应该全加上小括号
细节3:
int m=100;char c=m;//报错不可以直接保存int型的变量
char c1=(char) m;//正确,输出为100对应的unicode码值
细节4:
byte和short,char类型正在进行运算时,当做int类型处理
数据类型转字符串只需要+“”
反之,需要特别的转化格式
主要就是integer有点不一样,其他的还是比较好记的。
S5.charAt(0)//取s5字符串中的第一个字符,字符和字符串不可以转