1.java三大特点
封装,继承,多态
2.java语言的特性
静态强类型解释型语言并且具有多线程,跨平台,面向对象,自动垃圾回收
3.java运行机制
java文件通过javac命令生产.class文件,通过java命令经jvm生成.exe
4.命名
规则:
强制规则:首字母大小写,数字,下划线,美元符,并且数字不可以开头
非强制:望名知义 驼峰规则
ps:文件名和类名 首字母大写 变量名/方法名 首字母小写
5.数据类型
5.1本质
就是规定占用内存空间的大小,用位和字节表示
5.2分类
5.2.1基本数据类型
数值型
整数
Byte 字节型 8bit ~128~127
Short 短整型 16bit -32768~32767
int 整型 32bit -2147483648~2147483647
Long 长整型 64bit 需要L/l结尾
小数/浮点数
Float 单浮点 32bit 需要F/f结尾
Double 双浮点 64bit 需要D/d结尾,也可以省略
字符型
Char 16bit 0~65535 不需要符号位
布尔型
Boolean 8bit , 00000001 是true , 00000000是false
5.2.2引用数据类型
类,数组,接口
5.3进制转换
强制类型转换:高精度 到 低精度 是强制类型转换,高位截取,会造成精度的缺失
自动类型转换:低精度 到 高精度 是自动类型转换
自动:byte --> short --> int --> long --> float --> double
char -->
由于 char是字符型,虽然也是16bit , 但是范围是0~65535,而 byte 和 short 都可以存储负数,但是char不能存储负数,所以,byte和short 无法自动转换为char.short同理
5.4混合运算
在混合运算中,结果是最大的类型是
另外:当byte,short,char,int 四种类型中,任意一种或多种进行混合运算时,结果均为int类型
简单来说,混合运算的结果,为参与运算的最大数据类型,但是最小也是int类型
6.变量
6.1常量
字面量:也有数据类型,但是没有名字,不能复用
值在整个程序生命周期中是不能修改的
整数默认int,小数默认double
如果变量使用了final修饰,则为常量
整个程序生命周期中值不能修改,但是可以复用
6.2变量
变量:可以更改的量,可以再程序执行中对值进行更改,可以复用,可以通过名字找到对应的内存空间,方便对数据进行增删改查操作,可以复用,利于维护扩展
6.2.1全局变量
所有地方都可以直接访问的变量并且不需要任何二次引用(.),称为全局变量 public
6.2.2 变量的定义与声明
数据类型 变量名 = 值 ;
数据类型 变量名 ; 不赋值也可以
数据类型 划分内存空间 , 命名 , 赋值
6.2.3 变量的分类
局部变量 : 在方法中,创建的变量,是局部变量
成员变量 : 在类体中(方法外),就是成员变量
静态变量 : 在类体中(方法外)使用static创建的变量,是静态变量
6.2.4变量调用
局部变量 : 在方法中,直接写变量名调用即可,并且方法外无法使用某个方法中的局部变量
静态变量 : 类名.静态变量名进行调用,同类中,类名可以省略
成员变量 : 对象.成员变量进行调用,先不管
6.2.5 默认值
静态变量和成员变量有默认值
整数 0 小数0.0 字符 \u0000 布尔 false 引用null
局部变量不赋值不能使用,会报错.
6.2.6优先级
优先级
局部变量 可以和静态变量/成员变量 同名吗?
可以,从代码角度去看,因为在不同作用域
从内存角度出发,因为没在一个内存中进行存储
如何区分同名的静态变量和局部变量呢? 使用类名
如果静态变量与局部变量重名默认调用的是局部变量
如果想调用静态变量需要类名前缀
6.2.7 作用域
可以往下穿透大括号,但是不能超出包含他的大括号
7.操作符
7.1算术运算符
+ - / * ++ --
++:自身+1,把值拿出来+1,再放回去,会发生赋值操作,可以自动转换类型
i++:先赋值i 然后进行+1运算
++i 先把i+1 然后进行赋值
7.2关系运算符
结果返回是布尔型 true /false
> >= < <= !=
7.3位运算符
位运算,得到布尔型
& : 位与,两边都为真,结果才是真
| : 位或,一边为真,结果就为真
! : 位非,取反,真变假,假变真
^ : 位异或,两边不一样,结果就是真
&& : 短路与,且,两边都为真,结果才是真如果第一个条件为假,则第二个条件不再执行,直接返回false
|| : 短路或,或,一边为真,结果就为真如果第一个条件为真,则第二个条件不再执行,直接返回true
8.运算符
8.1赋值运算符
将右边的值赋值给左边 = += -= /= *= ^=
右结合,同优先级,从右往左计算,可以进行强制类型转换
8.2字符串拼接符
字符串用双引号表示
如果想表示字符串的双引号,需要用转义符 " \"
如果想要表示转义符,就要两个转义符" \\"
字符串的拼接符 "+"如果左右两端是数字,加号用作算术运算符,但两边为字符串就是算术运算符
如果直接把变量名,写在字符串中,则只是单纯的字符串而已,并不会进行变量调用
8.3三目运算符
三目运算符也是三元运算符
布尔表达式?真:假; (if的简写)