细说那些被忽略的Java小知识(一)
来源:互联网 发布:python idle mac下载 编辑:程序博客网 时间:2024/05/23 14:12
1、Java到底是什么类型的语言?
对于初学者而言,想必有许多人不清楚什么是编译语言,什么是解释语言。
编译型语言:在程序执行前,有一个单独的过程,将程序编译成机器语言,以后运行时都不用再编译。
解释型语言:在程序运行时,将源文件解释成机器语言。
而Java既有编译过程,又有解释过程,那么它到底属于什么?
Java文件在运行前先被编译(工具:java.exe)成字节码文件(class文件),然后在虚拟机中被解释(工具:javac.exe)成机器语言。不过由于它每次运行都需要执行这样的过程,所以它还是被归入解释型语言。
2、在安装环境时JRE不得放入JDK包内
JDK开发工具自带JRE运行环境,如果再放一个JRE在其中,会导致冲突,从而失效。
3、关键字需要注意的细节
private:用于封装数据,被private修饰的方法和变量在继承中,不被子类继承
abstract:用于定义抽象类,被abstract修饰的方法没有方法体
static:定义共享数据,无论所属类被创建多少次,它只占一份内存
final:与static连用,定义全局常量
synchronized:用于解决多线程问题,使方法同步
import:用于解决类名冲突问题(java.lang包默认导入)
package:写在除注释外的第一行
4、基本类型数据作为成员变量拥有初始值
boolean:false char:null
byte:0 int:0
short:0 Long:0L
float:0.0f double:0.0d
5、数的不同进制表达
不同进制运算:0b-二进制,0-八进制,ox-十六进制
注:二进制配合位运算是最高效的运算方式
6、指数运算
指数记数法:num1 e (+-)num2 f = num1*10^(+-)num2
7、eclipse格式化快捷键无效
ctrl+shift+f 搜狗输入法的简繁转化会占用该快捷键
8、更换jdk导致eclipse无法使用
9、如何减少gc(垃圾回收)对jvm的负担
(1)不要显式调用System.gc()
此函数建议JVM进行主GC,虽然只是建议而非一定,但很多情况下它会触发主GC,从而增加主GC的频率,也即增加了间歇性停顿的次数。
(2)尽量减少临时对象的使用
临时对象在跳出函数调用后,会成为垃圾,少用临时变量就相当于减少了垃圾的产生,从而延长了出现上述第二个触发条件出现的时间,减少了主GC的机会。
(3)对象不用时最好显式置为Null
一般而言,为Null的对象都会被作为垃圾处理,所以将不用的对象显式地设为Null,有利于GC收集器判定垃圾,从而提高了GC的效率。
(4)尽量使用StringBuffer,而不用String来累加字符串
由于String是固定长的字符串对象,累加String对象时,并非在一个String对象中扩增,而是重新创建新的String对象,如Str5=Str1+Str2+Str3+Str4,这条语句执行过程中会产生多个垃圾对象,因为对次作“+”操作时都必须创建新的String对象,但这些过渡对象对系统来说是没有实际意义的,只会增加更多的垃圾。避免这种情况可以改用StringBuffer来累加字符串,因StringBuffer是可变长的,它在原有基础上进行扩增,不会产生中间对象。
(5)能用基本类型如Int,Long,就不用Integer,Long对象
基本类型变量占用的内存资源比相应对象占用的少得多,如果没有必要,最好使用基本变量。
(6)尽量少用静态对象变量
静态变量属于全局变量,不会被GC回收,它们会一直占用内存。
(7)分散对象创建或删除的时间
集中在短时间内大量创建新对象,特别是大对象,会导致突然需要大量内存,JVM在面临这种情况时,只能进行主GC,以回收内存或整合内存碎片,从而增加主GC的频率。集中删除对象,道理也是一样的。它使得突然出现了大量的垃圾对象,空闲空间必然减少,从而大大增加了下一次创建新对象时强制主GC的机会。
- 细说那些被忽略的Java小知识(一)
- java学习笔记之java基础中那些被忽略的小知识点
- 细说C++中那些容易忽略而又非常重要的知识点
- Java被忽略的基本知识(一)
- 一些经常被忽略的Java知识
- 一些常被你忽略的CSS小知识
- 计算机网络中容易被忽略的小知识
- 一些常被你忽略的CSS小知识
- 【java解惑】java中那些反常识的小知识
- BLE 天线容易忽略的小知识
- 一些容易忽略的小知识
- PHP容易忽略的小知识
- scanf,那些被忽略的
- 那些被忽略的需求
- 【java解惑】java中那些反常识的小知识(续)
- 被你忽略掉的 Java 细节知识
- Java学习琐碎小知识(一)
- Java基础小知识(一)
- unity开发 斗地主算法—判断手里的牌是否有大于上家的牌(是否显示要不起按钮)
- const 与 指针
- 每天回顾linux命令(last)
- PHP封装JSON数据方法
- tx2 opencv ubuntu16.04 问题总结
- 细说那些被忽略的Java小知识(一)
- ImportError: No module named PyQt4
- 隐马尔可夫模型
- java 调用命令 备份mysql数据库【收藏】
- 断点续传
- JAVA字符串格式化-String.format()的使用
- 刘赖简介——同泰国医馆专家介绍
- 机器学习之knn
- 决策树及python实现