目录
1 标识符,给变量起名
a. 区分大小写
b. _/ $/ 字母/ 数字,数字不可在首位
c. 关键字不可作为标识符
2 关键字
关键字全是小写的!
分类 | 例子 |
---|---|
数据类型 | byte、char、float、int、short、long、 double、 void、new、boolean、true、 false、instanceof(指出对象是否是特定类) |
语句 | if、else、break、continue、switch、case、 default 、 for、do、 while、return、try、catch、finally、 throw、this、 super |
修饰的关键字 | abstract、final(不能被继承)、native、private、 protected、public、static、synchronized(同步)、transient、 volatile |
方法、类、接口、包、异常 | class、 extends、 implements、interface(接口)、 package、import、throws |
Java保留的没有意义的关键字 | cat、 future、 generic、innerr、 operator、 outer、rest、var |
3个保留字 (不是关键字,而是文字) | true、false、null |
byte 字节、比特,用于文件读取的缓冲区
finally 跟 try - catch
final 不能被继承
https://www.jb51.net/article/178975.htm
transient 表示 变量不被序列化处理
序列化:将对象转成 1 个字节流 存储
分类:
区分
final、finally、static、const
final | final可修饰 变量、类、方法 final 修饰的变量是常量 这个变量必须赋值 且只能被赋值1次,然后不能被修改 方法 = 子函数,其形参时final的话,方法内也不可对其赋值 final类 不可以被继承(extend) final方法 不可以重写,但可以重载 内部类可以访问 final的局部变量 |
finally | finally块通常放在 try、catch 后面 用来关闭、释放 物理资源(数据库连接,网络连接,磁盘文件) finally块中的代码,无论是否有异常,都会去尝试执行 |
static | 不能修饰 构造函数、函数参数、局部成员变量 static 成员函数 不能使用this对象 static 成员字段、语句块:按声明先后顺序初始化 static 方法、字段 只属于类,所有对象共享,java不能直接定义全局变量,通过static实现 |
const | java 中没有 const,const = static + final 来实现 |
内部类可以访问 final的局部变量
原因:https://bbs.itheima.com/thread-136974-1-1.html
public, private, protected, default 详解
https://blog.csdn.net/The_Best_Hacker/article/details/83869945
java static
https://blog.csdn.net/qq_44715943/article/details/115603616
new
用于实例化一个对象
为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值
如果实例变量在声明时被显式初始化,那就把初始化值赋给实例变量
调用构造方法
返回对象的引用
具体作用表现为:
在内存划分两个空间:
一个空间堆,new className()这个对象
一个空间栈,存放 className中的相关值
时间 java
各时区
https://blog.csdn.net/jinzheng069/article/details/51252172
当前时间
https://blog.csdn.net/topdeveloperr/article/details/91571311
Calendar.getInstance().getTime() 包含时分秒的当前时间
new Date(System.currentTimeMillis()) 不包含时分秒的当前时间
switch
switch() 能识别哪些类型?
JDK1.0-1.4 数据类型接受 byte、short、int、char
JDK1.5 数据类型接受 byte、short、int、char、enum(枚举)
JDK1.7 数据类型接受 byte、short、int、char、enum(枚举)、String 六种类型
PS: 上面提到的基本类型的包装类型也是支持的
不包含long、boolean、float、double
case 标签必须为字符串常量 或 字面常量
字面常量 https://blog.csdn.net/hengshan/article/details/6266113
整形、浮点型、字符串型、字符型
switch(变量)匹配选择:
1) 先匹配到与变量相同的case
2) 如无匹配的case,则执行default(无defalut语句,就会匹配结束)。
3) 如 case 或 default 无break / coutinue / return 等等跳转语句,则会继续向后顺序执行(不论是否default还是case),直到遇到break、return 或 结尾
注意:
每个switch句都应该包含一个default分支,即使default分支没有业务逻辑代码。
dafault分支中没有 业务逻辑代码时,可以记录一条日志或抛出异常等
对于枚举类型的switch语句,已经明确涵盖所有可能的场景,可以省略default分支。
IDE或其他静态分 析工具也能在switch语句缺少枚举场景时,发出警告
3 数据类型
见
https://blog.csdn.net/qq_40893824/article/details/105997362
float f1 = 54.321; // 错误
float f2 = 54.321f; // 正确
folat:32位
double:64位
boolean 布尔型真正数据是0(false)、1(true)
但不能直接用 0、1 赋值
命名规则
字母 $ _ 数字
数字一定不在开头
常量名称大写
4 分隔符
4.1 分号 ‘;’
一个分号一个句子,无分号就意味着连续
下面两个代码逻辑上是一样的:
int sum = 1 + 2 + 3 + 4 ;
int sum = 1 + 2 +
3 + 4 ;
5 常量,用final修饰的变量 就是常量
final int a = 1 ;
6 运算符
6.1 逻辑运算符
逻辑运算符 | 例子 | 结果 |
---|---|---|
& 与 | true & true true & false true & false false & false | true false false false |
` | ` 或 | true ` |
! 非 | ! true! false | false true |
&& 短路与 | true && true true && false true && false false && false | true false false false |
^ 异或 | true ^ true true ^ false true ^ false false ^ false | false true true false |
` | ` 短路或 |
与 和 短路与 的区别
当检查左边已有结果,右边不会再去检查 是 短路与
回去检查 是 与
或 和 短路或 同理
6.2 位运算符
| 位运算符 |
|:–|:–|:–|
| & 与 | | |
| |
或 | | |
| ~ 取反 | | |
| ^ 异或 | | |
| << 左移 | | |
| >> 右移 | | |
| >>> 无符号右移 | | |
7 java vs c++
Java 没有指针,它的引用可以理解为安全指针
C++ 具有和 C 一样的指针
Java 不支持多重继承,只能通过实现多个接口来达到相同目的
C++ 支持多重继承
Java 不支持操作符重载,虽然可以对两个 String 对象支持加法运算,但是这是语言内置支持的操作,不属于操作符重载
C++ 可以操作符重载
Java 的 goto 是保留字,但是不可用
C++ 可以使用 goto
Java 不支持条件编译
C++ 通过 #ifdef #ifndef 等预处理命令从而实现条件编译
Java 更偏向面向对象语言,所有的对象都继承自 java.lang.Object
C++ 为了兼容 C 即支持面向对象也支持面向过程
https://www.zhihu.com/question/40959108
Java 通过虚拟机从而实现跨平台特性
C++ 依赖于特定的平台
Java 支持自动垃圾回收
C++ 需要手动回收
包装类
包装类型,不赋值的话 默认值为 null,基本类型有默认值
包装类型可用于泛型,基本类型不可以
包装类型属于对象类型,几乎所有对象实例都存在于堆中
基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 static 修饰) 存放在 Java 虚拟机的堆中。
相比于对象类型, 基本数据类型占用的空间非常小