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")也只创建了一个对象。
java中八种基本数据类型以及它们的封装类,String类型的一些理解的更多相关文章
- (转载)JAVA中八种基本数据类型的默认值
原文链接: http://simon-c.iteye.com/blog/1016031 引用 For type byte, the default value is zero, that is, th ...
- Java的八种基本数据类型及其包装类
Java有八种基本数据类型,所谓基本类型就是说存储时仅存在栈中,那么与之相对就是引用类型,引用类型既存在栈里又存在堆里,栈内存放堆内地址. 八种基本类型分别为byte short int long f ...
- Java学习笔记四:Java的八种基本数据类型
Java的八种基本数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. Java基本类型共有八种,基本类型可以分为三类,字符类型char,布 ...
- Java中几种常用数据类型之间转换的方法
Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...
- java的八种基本数据类型
据说表格的方式一目了然 一. java数据类型的取值范围如下: 注意:long型后如果不加 L 则默认为int型,float型如果不加 F 则默认为double型: 注意!注意!注意 ...
- java中的堆、栈、常量池以及String类型的两种声明
参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...
- Java中8种基本数据类型是哪些
1 public class Ceshi { 2 int a; 3 double b; 4 boolean c; 5 char d; 6 float f; 7 byte e; 8 long h; 9 ...
- Java中如何正确的将byte[]数组转化为String类型?
很多人在编程时,总是喜欢用一下方法将数组转为字符串:(a为byte数组) String s=a.toString(); 可是每次返回的时候,新手看来返回的结果是乱码,比如说我,写RSA算法时,没有注意 ...
- java 八种基本数据类型之与对应的封装类之间的相互转化
迁移时间--2017年5月26日17:47:37 Author:Marydon 一.java数据类型之基本数据类型 UpdateTime--2017年1月9日17:31:14 (三)格式转换 1. ...
随机推荐
- C#之转换两个不同类型但是成员相同的对象
/// <summary> /// 转换两个不同类型但是成员相同的对象 /// </summary> /// <typeparam name="T"& ...
- java====color、font、button、label、textfield、textarea使用
1. Color类 µ 公共静态属性:共13个静态属性,分别代表13种不同的颜色常量. µ 构造函数 ü public Color(int r,int g,int b):以整数形式给出红.绿.蓝三个分 ...
- mysql优化2:列类型选择原则
1.字段类型优先级 整型>date,time>enum,char>varchar>blog,text 列的特点分析: 整型:定长,没有国家/地区之分,没有字符集的差异 比如ti ...
- [LeetCode] Self Dividing Numbers 自整除数字
A self-dividing number is a number that is divisible by every digit it contains. For example, 128 is ...
- Java入门之JDK的安装和环境变量的配置
Java的版本 1. Java SEjava se 以前称为J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程序.Java SE是基础包,但是也包含了支持 Jav ...
- 6.19 noip模拟题(题目及解析转自 hzwer 2014-3-15 NOIP模拟赛)
Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序 ...
- [PA 2014]Pakowanie
Description 你有n个物品和m个包.物品有重量,且不可被分割:包也有各自的容量.要把所有物品装入包中,至少需要几个包? Input 第一行两个整数n,m(1<=n<=24,1&l ...
- 【NOIP2017 OFO(下)】
·我不知道对不对,只是不想让大米兔就这样离开. by tkys_Austin; [另一只情绪化的兔子] 今年的11月12日NOIP提高组, ...
- 【bzoj4571&&SCOI2016美味】
4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 656 Solved: 350[Submit][Status][ ...
- 遗传算法:N皇后
N皇后问题描述 N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自动攻击). 遗传算法 遗传算法是局部束搜索的变形: 与自 ...