明确一下自己在大二的时候学的java时疏漏的知识点:
JDK:用于java开发环境。供开发者使用,较大
JRE:java运行环境。装了这个java的运行环境才算搭建成功(jvm基本实现+基本类库)
JVM:java虚拟机,识别出用java语言编译成的.class文件,并将之转换成裸机上相应操作系统的版本(瞒天过海-让java可以跨平台移植)
局部变量使用前记得初始化!
用final修饰的--符号常量。例如:PI
命名规范:所有名字见名知意。
类成员变量,局部变量,方法名:首字母小写和驼峰原则-》monthSalary,run(),runRun()
常量,大写字母/下划线MAX_VALUE 类名:首字母大写+驼峰原则:Man.GoodMan
JAVA的数据类型:
基本数据类型:数值型-(整形
(byte 1字节 short 2字节 int 4字节 long 8字节)
浮点型(float 4字节 double 8字节)
布尔型 1位 字符型 char 2字节 )
引用数据类型:class string
---------------------------------------------------------------------------------------------------
基本数据类型的表示:014:console 出来是12 0x15:console出来是 21 0b1101 console出来是13
float:(浮点数)-特点是不精确。只能精确到小数点后7位 表示范围:+-3.403e38
由于绝大多数应用程序默认为double类型。所以浮点常量默认为double,若将默认的小数赋值给float需要在小数最后加一个F 例如:float f1=3.14F;
由于浮点数是不精确的,所以一定不要用于比较!(一定要比较的话。引入math里面的BigDecimal包的BigDecimal数据类型)
字符集|:java用的是unicode。
双引号括起来表示字符串。单引号是字符!
布尔值:因为只占一位,所以在java中必须用true false而不能用0和1,因此,布尔值的比较用if(true)就行了
算数运算符:因为其左右都需要操作数,因此叫做二元运算符
整数运算规则:有一个为long 结果为long 没有long 时 结果为int(无论其操作数为short和byte)
只有两个操作数为float 结果才为float,有double结果为double
扩展运算符:+= -= *= ;这一类。
关系运算符:== != > ;这一类。
怎么比较字符型?有个骚操作-》printLn(0+b);因为0是默认int型,所以默认转化成int了
syso(b>c);b,c都是字符。结果为boolean
& ! ^既是逻辑运算符,还是位运算符
例:
& 用于逻辑运算符与时,其两端的比较数必须为布尔值!结果也为boolean 其优先级:非》与》或例:a||b&&c -> a||(b&&c);并不是严格按照从左到右的顺序的。
写这个例子之前,笔者女朋友曾经问过他一个关于c语言的问题,当时分不清&,|到底是用作位运算还是用作布尔判断,贼尴尬现在回看教程视屏不禁幡然醒悟,当&,|两端为布尔值时进行布尔值运算,两边为数值时进行二进制的位运算。
短路与&&:两个操作数其中一个为false,立即返回false 停止判断!
字符串:3+“4”=34;3+‘a’=100;
自动类型转化:并不是字节小的转化成字节大的。比方说:float(4字节) 和 long(8字节)-》实际上是从long 转化成float.其本质:从容量小的转化到容量大的。这里float容量更大。因此转化成float
花了一个小时来查资料,为什么float用32位还能比64位的long表示的数值范围还大。
详情:
float:表示数据范围(这个38次方是怎么算出的??):-3.403E38~3.403E38 long类型的范围:2^64次方
float存储原理-》
如图:S代表符号位,表示其值的正负;E表示指数位,M表示小数位。欲表示值V=(-1)^s * M * 2^E
指数为8位范围-》+127 ~ -128(用二进制的指数表示)综上,其表示范围;23位小数部分加上8位指数部分。