J SE基础笔记4
来源:互联网 发布:青海省水电数据 编辑:程序博客网 时间:2024/06/06 00:32
关于相等性的比较(==):
1.对于原生数据来说,比较的是左右两个的值是否相等。
2.对于引用类型来说,比较的是指向的对象是否为同一个。
Object类解析:
equals方法:该方法定义在Object类中。它判断调用该方法的引用和参数引用是否指向同一个对象。
这个方法在String类中被重写。
String类解析:
equals方法被重写,在String类中,这个方法判断两个字符串的值是否相等。
String是常量,一旦生成对象就无法改变。
String + String 会生成一个新的对象。
intern方法:返回在String Pool中与调用该方法的字符串对象的值相同的对象的引用。
String Pool(字符串池):
字符串池在内存栈中。
用字面量给字符串赋值的时候,会先检查字符串池里有没有该与字面量值相同的字符串对象。如果有,将引用指向该对象。如果没有,就新生成一个与该值相等的新字符串对象,并将引用指向它。
用new String(String original) 给字符串引用赋值时,先会检查字符串池中有没有值与original相同的字符串,如果没有,先在字符串池中创建字符串对象,有则不创建。然后再在内存堆中生成值与之相同的字符串对象,并指向它。
总之,都在堆中生成对象,都返回堆中字符串对象的地址。而字符串池中则会先有值相同的字符串对象,在堆中生成的对象都是它的副本。
两个字面量字符串相加,得到字符串池中的对象引用。而带有一个字符串引用的相加就会得到堆中的对象的引用。
"Hel" + "lo"; 得到的引用指向字符串池对象。
String lo = "lo"; "Hel" + lo; 得到的引用指向堆中的对象。
StringBuffer类:
为了解决String对象是常量的问题。String对象生成之后,它的值不能再改变,也就是不能往里添加内容。而StringBuffer类则 可以用append方法往里增加内容。因此它多作为输入输出缓冲。
StringBuffer非常像String,使用append方法,参数可以是整型,浮点型,布尔型,字符数组等,但是都将转化为字符串形式添加到尾部。
包装类(Wrapper Class):
针对于原生数据类型的包装。目的将原生数据变成对象。所有的包装类(8个)都位于java.lang包下。实现原生类型和包装类型的相互转换。
数组:
int[] a = new int[4];
在Java里,数组是一个对象,这是和C语言很大的区别。
数组里length属性是一个final变量,一旦生成数组对象就无法再去改变。
数组的equal方法没有重写,因此两个数组的长度和值都一样,他们的equal之后的返回值也是false。
Object[] objs = new Object[3];
这句代码只生成三个Object的引用,而没有生成Object对象,每个数组元素存放的是Object的引用。还需将它每个引用实例化一个对象。
1.对于原生数据来说,比较的是左右两个的值是否相等。
2.对于引用类型来说,比较的是指向的对象是否为同一个。
Object类解析:
equals方法:该方法定义在Object类中。它判断调用该方法的引用和参数引用是否指向同一个对象。
这个方法在String类中被重写。
String类解析:
equals方法被重写,在String类中,这个方法判断两个字符串的值是否相等。
String是常量,一旦生成对象就无法改变。
String + String 会生成一个新的对象。
intern方法:返回在String Pool中与调用该方法的字符串对象的值相同的对象的引用。
String Pool(字符串池):
字符串池在内存栈中。
用字面量给字符串赋值的时候,会先检查字符串池里有没有该与字面量值相同的字符串对象。如果有,将引用指向该对象。如果没有,就新生成一个与该值相等的新字符串对象,并将引用指向它。
用new String(String original) 给字符串引用赋值时,先会检查字符串池中有没有值与original相同的字符串,如果没有,先在字符串池中创建字符串对象,有则不创建。然后再在内存堆中生成值与之相同的字符串对象,并指向它。
总之,都在堆中生成对象,都返回堆中字符串对象的地址。而字符串池中则会先有值相同的字符串对象,在堆中生成的对象都是它的副本。
两个字面量字符串相加,得到字符串池中的对象引用。而带有一个字符串引用的相加就会得到堆中的对象的引用。
"Hel" + "lo"; 得到的引用指向字符串池对象。
String lo = "lo"; "Hel" + lo; 得到的引用指向堆中的对象。
StringBuffer类:
为了解决String对象是常量的问题。String对象生成之后,它的值不能再改变,也就是不能往里添加内容。而StringBuffer类则 可以用append方法往里增加内容。因此它多作为输入输出缓冲。
StringBuffer非常像String,使用append方法,参数可以是整型,浮点型,布尔型,字符数组等,但是都将转化为字符串形式添加到尾部。
包装类(Wrapper Class):
针对于原生数据类型的包装。目的将原生数据变成对象。所有的包装类(8个)都位于java.lang包下。实现原生类型和包装类型的相互转换。
数组:
int[] a = new int[4];
在Java里,数组是一个对象,这是和C语言很大的区别。
数组里length属性是一个final变量,一旦生成数组对象就无法再去改变。
数组的equal方法没有重写,因此两个数组的长度和值都一样,他们的equal之后的返回值也是false。
Object[] objs = new Object[3];
这句代码只生成三个Object的引用,而没有生成Object对象,每个数组元素存放的是Object的引用。还需将它每个引用实例化一个对象。
- J SE基础笔记4
- J SE基础笔记1
- J SE基础笔记2
- J SE基础笔记3
- 【Java学习-J.160331.0.4】笔记3-Linux基础
- Java SE学习笔记-Java基础语法
- java se 基础核心 笔记 片段3
- java SE复习笔记4
- Java SE学习笔记-基础加强之基础内容
- 【Java学习-J.160331.0.5】笔记4-Linux基础-管理本地Linux用户和组
- 传智播客的JAVA SE基础视频 1-5 自学笔记
- Java SE学习笔记-基础加强之注解
- Java SE学习笔记-基础加强之泛型
- Java SE学习笔记-项目(面向对象基础)
- JAVA学习笔记一:JAVA基础JAVA SE
- 【Java学习-J.160328.0.2】笔记1-Linux基础
- 【Java学习-J.160330.0.3】笔记2-Linux基础
- Java SE 学习笔记 Lesson 4
- VB.net 调用自己封装起来的用VB.net做的DLL
- 蒋川最佳棋手 孙勇征最大突破
- J SE基础笔记3
- Rails宝典之第一式: 实例变量做查询缓存
- WPF的可视树与逻辑树
- J SE基础笔记4
- C语音___复习一下
- ant的模块化以及java调用
- 细说cache
- C++复习(继承,运算符)
- 封送处理您的数据:利用 COM 和 Windows 2000 的高效传输数据的技术
- oracle 技巧 sql 优化
- SSH1整合下的通用泛型DAO+分页,基于HibernateTemplate
- oracle 存储过程的基本语法 及注意事项