1、一个源文件可以声明多个类,但是最多只能有一个类使用public进行声明,并且要求声明为public的类的类名和源文件名相同。
Java17API文档:
2、更多的优点
垮平台性
面向对象性 高内聚 低耦合
健壮性 去掉了一些影响程序健壮性的部分(例如指针、内存的申请和释放)
安全性高:适合网络和分布式,需要安全机制防止恶意攻击,例如安全防范机制,可以分配不同的命名空间,防止替代本地的同名类、字节代码检查
简单性:C++语法的简化版
高性能:现在可以用JVM中的JIT即时编译技术提高运行效率
3、缺点:
语法过于复杂严谨
整个架构会比较重,开发成本比较高,需要经济实力
并非适用于所有领域,java在服务端编程和跨平台客户端应用领域很有优势
4、JVM(Java Virtual Machine Java虚拟机)
一个虚拟的计算机,是java程序的运行环境,JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。
可以实现自动内存管理(内存分配和内存回收)
java不需要程序员回收无用内存,提供了一种系统级线程跟踪内存空间的分配情况,在内存到达阈值的时候,检查并释放可被释放的存储器空间。
GC的自动回收,提高了内存空间的利用效率,减少了因为没有释放空间导致的内存泄露。
内存泄露:垃圾但是JVM没有识别出是垃圾,所以没有回收。
内存溢出:都是有用的东西,都不是垃圾,所以都不能清理,就溢出了。
内存泄漏多了会导致内存溢出。
5、java是半解释半编译的语言,前端编译器+(JVM中的 解释器+编译器)
6、命名习惯
类名和接口名 所有单词第一个字母大写
变量名 第二个单词起第一个字母大写
常量名 全部大写
包名 全部小写
7、&与&& 以及 |与||的区别
& |无论如何两边语句都要运行 然后判断
&& || 只要左边可以判断了 右边就不需要运算了 短路于
8、获取[a,b]范围的随机整数
(int)(Math.random()*(b-a+1))+a
9、switch表达式中只能是特定的数据类型
byte、short、char、int
遇到break跳出,没遇到break继续执行后面的case语句(case穿透)执行完所有的case和default后才退出
10、无限循环不仅仅可以用while(true)也可以是for(;
11、switch和if的区别,switch可以通过穿透性 同时执行多个分支,同时switch的效率高,但是场景比较狭窄
1、整数类型
byte 1字节 -128~127
short 2字节 -215 ~215 -1
int 4字节 -231 ~231 -1 大概21亿
long 8字节 -263 ~263 -1
定义long类型 赋值要以 l 和 L 作后缀
整型常量默认为int型
补充:
字节byte 计算机用于计量存储容量的基本单位,一个字节等于8bit
位bit 是数据存储的最小单位,二进制数系统中,每个0或1就是一个位,叫做bit
2、浮点类型
float单精度 4字节 -3.403E38~3.403E38
double双精度 8字节 -1.798E308~1.798E308
如果在开发的时候普通的浮点类型精度无法满足需求,我们可以BigDecimal替换浮点类型变量
3、字符类型char
通常2个字节
java中所有字符都通用Unicode编码(其实就是一种映射)
三种形式:
‘’单引号
用unicode值 \uXXXX
转义字符
ASCII码
4、布尔类型
4字节
true为1
false为0
自动类型提升
自动类型提升是java自动执行的,而强制类型转换是自动类型提升的逆运算,需要我们手动执行
强制类型转换
规则:
容量小的变量与容量大的变量运算的时候,结果自动转换为容量大的数据类型(仅仅改变的是范围的大小)
将容量大的变量转换为容量小的变量类型,需要使用强制类型转换(强制类型转换需要使用强转符 (数据类型) )
是一种引用数据类型
String类型的变量可以用一对“”的方式进行赋值
可以用 + 进行连接运算
通用
说明 | 快捷键 |
---|---|
复制代码-copy | ctrl + c |
粘贴-paste | ctrl + v |
剪切-cut | ctrl + x |
撤销-undo | ctrl + z |
反撤销-redo | ctrl + shift + z |
保存-save all | ctrl + s |
全选-select all | ctrl + a |
提高效率
说明 | 快捷键 |
---|---|
智能提示-edit | alt + enter |
提示代码模板-insert live template | ctrl+j |
使用xx块环绕-surround with … | ctrl+alt+t |
调出生成getter/setter/构造器等结构-generate … | alt+insert |
自动生成返回值变量-introduce variable … | ctrl+alt+v |
复制指定行的代码-duplicate line or selection | ctrl+d |
删除指定行的代码-delete line | ctrl+y |
切换到下一行代码空位-start new line | shift + enter |
切换到上一行代码空位-start new line before current | ctrl +alt+ enter |
向上移动代码-move statement up | ctrl+shift+↑ |
向下移动代码-move statement down | ctrl+shift+↓ |
向上移动一行-move line up | alt+shift+↑ |
向下移动一行-move line down | alt+shift+↓ |
方法的形参列表提醒-parameter info | ctrl+p |
批量修改指定的变量名、方法名、类名等-rename | shift+f6 |
抽取代码重构方法-extract method … | ctrl+alt+m |
重写父类的方法-override methods … | ctrl+o |
实现接口的方法-implements methods … | ctrl+i |
选中的结构的大小写的切换-toggle case | ctrl+shift+u |
批量导包-optimize imports | ctrl+alt+o |
类结构、查找和查看源码
如何查看源码-go to class… | ctrl + 选中指定的结构 或 ctrl+n |
---|---|
显示当前类结构,支持搜索指定的方法、属性等-file structure | ctrl+f12 |
退回到前一个编辑的页面-back | ctrl+alt+← |
进入到下一个编辑的页面-forward | ctrl+alt+→ |
打开的类文件之间切换-select previous/next tab | alt+←/→ |
光标选中指定的类,查看继承树结构-Type Hierarchy | ctrl+h |
查看方法文档-quick documentation | ctrl+q |
类的UML关系图-show uml popup | ctrl+alt+u |
定位某行-go to line/column | ctrl+g |
回溯变量或方法的来源-go to implementation(s) | ctrl+alt+b |
折叠方法实现-collapse all | ctrl+shift+ - |
展开方法实现-expand all | ctrl+shift+ + |
查找、替换与关闭
查找指定的结构 | ctlr+f |
---|---|
快速查找:选中的Word快速定位到下一个-find next | ctrl+l |
查找与替换-replace | ctrl+r |
直接定位到当前行的首位-move caret to line start | home |
直接定位到当前行的末位 -move caret to line end | end |
查询当前元素在当前文件中的引用,然后按 F3 可以选择 | ctrl+f7 |
全项目搜索文本-find in path … | ctrl+shift+f |
关闭当前窗口-close | ctrl+f4 |
调整格式
说明 | 快捷键 |
---|---|
格式化代码-reformat code | ctrl+alt+l |
使用单行注释-comment with line comment | ctrl + / |
使用/取消多行注释-comment with block comment | ctrl + shift + / |
选中数行,整体往后移动-tab | tab |
选中数行,整体往前移动-prev tab | shift + tab |
Debug
说明 | 快捷键 |
---|---|
单步调试(不进入函数内部)- step over | F8 |
单步调试(进入函数内部)- step into | F7 |
强制单步调试(进入函数内部) - force step into | alt+shift+f7 |
选择要进入的函数 - smart step into | shift + F7 |
跳出函数 - step out | shift + F8 |
运行到断点 - run to cursor | alt + F9 |
继续执行,进入下一个断点或执行完程序 - resume program | F9 |
停止 - stop | Ctrl+F2 |
查看断点 - view breakpoints | Ctrl+Shift+F8 |
关闭 - close | Ctrl+F4 |
阿里巴巴Java编码规范检查插件,检测代码是否存在问题,以及是否符合规范。
使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码质量。
可视化的字节码查看器。
使用:
英文设置:
在 Help -> Edit Custom VM Options …,加上
-Duser.language=en
注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID和密钥
绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…
使用:鼠标选中文本,点击右键即可自动翻译成多国语言。
注:请注意保管好你的应用密钥,防止其泄露。
实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果属性较多很容易遗漏或者重复。
可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自己再跟进实际需求设置属性值。
给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读
在编辑器右侧生成代码小地图,可以拖拽小地图光标快速定位代码,阅读行数很多的代码文件时非常实用。
代码统计工具。
显示快捷键操作的按键
快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使用快捷键的习惯,告别死记硬背。
按alt+insert
,执行操作:
在 IDEA 里刷力扣算法题
根据 json 生成对象。
使用:使用alt + s 或 alt + insert调取。
举例:
{
"name": "tom",
"age": "18",
"gender": "man",
"hometown": {
"province": "河北省",
"city": "石家庄市",
"county": "正定县"
}
}
对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。
IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。
安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。