Java基础知识整理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java知识点总结
1环境搭建与开发
1.1 环境变量
JA V A_HOME:Java的安装目录;
CLASSPATH:指定一个路径列表,用于搜索Java在编译或运行时需要用到的类(.class文件);
PATH:指定一个路径列表,用于搜索可执行文件。
1.2 Java SDK应用
编译:Javac 类名.class;
运行:Java 类名;
打包:jar cf test.jar test (把当前目录下的test目录下的所有文件压缩到test.jar文件中)。
2变量与常量
Java中的常量用保留字final来实现。
变量:局部变量(local variable)、实例变量(instance variable)、类变量(class variable);任何变量在使用前都必须初始化,局部变量必须显示初始化,实例变量在类的构造方法被调用时初始化(分配默认值),类变量在类被加载时被初始化。
3标识符
3.1 命名
在Java语言中,标识符的定义规则是以字母、下划线、美元符开始,后面可以跟字母、下划线、美元符、数字。
因为Java语言使用Unicode字符集,所以对字母不仅限于英文,还可以是日文、韩文、阿拉伯文、中文等。
区分大小写,没有字数限制。
3.2 关键字
3.2.1static
static方法中不能有this和super关键字(static方法不是“面向对象”的,而是“面向类”的)。
static方法中只能访问所属类的static方法和变量。
static数据成员的初始化:在第一次生成该类的对象时初始化。
3.2.2final
1)final数据
a)static final
●更加典型的定义方式是public static final;
●占用一段不能改变的存储空间;
●代表编译时常量,即在编译器就能知道其值(如果只声明为final或
者static,是在运行时才知道值)。
●全部用大写字母命名,单词之间用下划线隔开。
b)final数据与final引用
●final数据的值不能被改变;
●final引用是指无法将其指向一个新的对象(数组也是一种引用),对
象本身的值是可以改变的。
c)空白final(声明为final却未赋初始值)
●可以做到根据对象有所不同,又保持恒定不变的特性;
●必须保证使用前已经初始化:在定义处赋值或者在构造器中赋值。
2)final参数
●无法在方法中更改引用所指向的对象。
3)final方法
●禁止覆盖,防止任何继承类修改它的定义;
●private方法都是final的,因此private方法无法覆盖。
4)final类
●不允许继承该类;
●final类中的所有方法都隐式指定为final的。
3.2.3transient
主要作用:防止对象的敏感信息被序列化,保证安全性。
transient用于在一个特定对象的一个域上关闭序列化,当该对象被序列化时,transient型变量不包含在序列化表示中。
原因:对于某些敏感信息(如密码),一经序列化处理,便可以通过读取文件或者拦截网络传输的方式访问到。
4运算符
4.1 算术运算符
4.1.1“/”运算符
如果被除数和除数都是整数,那么商也是整数;
如果被除数和除数中有一个是浮点数,商是浮点数;
当被除数是整数类型时,零不能作为除数(运行时报错);当被除数是浮点型时,除数为0,结果为Infinity。
4.1.2“%”运算符
既可以对整型数据取模,也可以对实型数据取模;
任何整数都不能对0取模;
不管是整型还是实型的取模运算,余数的符号与被除数的符号相同(若a%b,结果的符号与a相同)。
4.2 位运算符
<<:左移
>>:带符号右移(最高位为0则补0,为1则补1)
>>>:无符号右移(补0)
如果对char、byte、short类型的数据进行移位处理,那么在移位进行之前,它们会被转换为int类型,并且得到的结果也是一个int类型的值。
对char、byte、short进行运算时,都会得到一个int结果,必须将其显示地类型转换回原来的类型,在窄化转换的过程中可能会造成信息的丢失。
4.3 赋值运算符
如果赋值运算符两边的数据类型不相同,则需要进行类型转换,即“向左看齐”;
如果这种转换是由小向大的转换,系统将自动进行,如果是由大向小的转换,则需强制类型转换。
5数据类型
new将对象存储在堆里,故用new来创建一个小的对象,特别是小的简单的变量,往往不是很有效,因此,java不用new来创建对象,而是创建一个并非是引用的自动变量,这个变量直接存储值,并置于堆栈中,因此更加高效。
5.1 整型变量
在进行带有byte、short、int三种类型并存的表达式运算时,系统都会将short和byte 都先提升为int类型。
5.2 浮点型变量
●单精度浮点型float:32位;
●双精度浮点型double:64位。
5.3 字符型数据
●反斜杠(\)开头的字符;
●\u后接4位十六进制数字。
6数组
6.1 初始化
Java在声明数组时并不为其分配存储空间,因此在声明数组时不能指定数组的长度。
7字符串
String对象是不可变的,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则丝毫未动。
当把String对象作为方法的参数时,实际上是复制了一份引用。
String:字符串常量
StringBuilder:字符串变量(非线程安全)
StringBuffer:字符串变量(线程安全)
7.1 String
String str = new String(“good”); ——在内存的堆中创建一个”good”字符串对象
String str = “good”; ——在String pool中创建”good”字符串对象
7.2 StringBuffer
String与StringBuffer有什么区别?
String的长度是不可变的,String对象中存放的字符串对象不可修改;StringBuffer 的长度是可变的。因此如果经常需要增加、删除或者修改字符串中的某些字符,用String 就不方便,为了提高效率节省空间,应该使用StringBuffer。