java中⼋种基本数据类型以及它们的封装类,String类型的⼀些
理解
在我们⾯试或者考试过程中经常会考到⼋种基本数据类型以及它们的封装类,那么有哪⼋种基本数据类型呢?它们的封装类⼜是什么呢?
⾸先,⼋种基本数据类型分别是:int、short、float、double、long、boolean、byte、char;它们的封装类分别是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。
因为对基本数据类型封装之后,封装类有可以有⽅法和属性,然后就可以利⽤这些⽅法和属性来处理数据,⽐如Ingeter对象中有parseInt(String s),可以把字符串转换为int类型等。我们都知道有些类型的数据会有默认值,基本数据类型跟封装类型的默认值是不⼀样的,⽐如int i ,如果不赋值i默认为0;但是Integer j ,如果不赋值,则j 为null;因为封装类产⽣的是对象,⽽对象默认值为null。
tip:String 类型不是基本数据类型,它实际上是final修饰,所以也不可以继承。
String 类型的变量通常有两种赋值⽅式:⼀种直接赋值,例如String a = "hello world";另⼀种是⽤构造⽅法,例如 String b = new String ("hello world");那么这⾥的a 和b是否相等呢?他们⼜有什么不同呢?
如果⽤=作⽐较,则它们不相等,因为“=”⽐较的是基本数据类型的值是否相等或者⽐较对象是否为同⼀个对象;⽽变量a和变量b指向的是两个不同的对象,为什么这么说呢?先来理解⼀下2个变量的赋值过程,对于表达式String a = "hello world",会先创建⼀个字符串对象“hello world”,⽽这个字符串实际上是放在字符串缓冲区中,然后把a指向这个对象;⽽对于String b = new String("hello world");则会创建两个对象⼀个是“hello world”这个放在字符串缓冲区中的,另⼀个是new ⽅法构造出来的对象new String() 这个对象,新对象中保存的是“hello world”对象罢了,这个对象是放在堆内存中,⽽b 指向这个new String ()对象,这显然是不同的两个对象,所以他们⽤ “=”⽐较的结果为false。
如果⽤equals()⽅法⽐较,这结果为true,因为equals()⽅法⽐较的是对象的内容,它们的内容都为“hello world”。
另外值得提醒的是,字符串缓冲区中对相同的字符串只会存⼀次。假如我们同时写了String a ="hello world";String b = new String("hello world");那么字符串缓冲区实际只有⼀个hello world 字符串,在给b赋值时,会先检查字符串缓冲区中是否有“hello world”这个字符串,如果有则不创建,直接new String(),然后赋值,因此这种情况下,表达式String b= new String ("hello world")也只创建了⼀个对象。c++中string的用法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论