黑马程序员_java_数据类型及基本数据类型包装类
2014-12-12 18:47
295 查看
-------
android培训、java培训、期待与您交流! ----------
【基本数据类型】:变量名指向具体的数值 ,一般通过比如int a = 5;来定义。
【引用数据类型】:变量名指向存数据对象的内存地址,即变量名指向hash值,一般通过new 关键字来创建。
┏数值型━┳━整数型:byte short int long
┏基本数据类型━━┫ ┗━浮点型:float double
┃ ┣字符型:char
数据类型 ┗布尔型:boolean
┃ ┏类(class)
┗引用数据类型━━╋接口(interface)
┗数组(array)
想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象。
如:System.out.println("int max:"+Integer.MAX_VALUE);
八种基本数据类型的包装类
byte ——Byte
short ——Short
int ——Integer
long-----Long
float-----Float
double----Double
char----Character
boolean---Boolean
转换
基本数据类型和字符串之间的转换。
基本数据类型转换为字符串
方法 1. 基本数据类型+""
2. 基本数据类型.toString(基本数据类型值);
如:Integer.toString(110);//将110整数变成"34";
字符串转换成基本数据类型(如需对数字进行比较时)
公式:基本数据类型 变量名 = 基本数据类型包装类.parseXxx(XxxString);
在八个基本类型对象包装类中只有一个对象没有parse方法,就是Character.
方法 1. ① 静态调用方式 基本数据类型.parseInt("数字格式的字符串");
如:int num = Integer.parseInt("110");
② 对象调用方式 Integer i = new Integer("110");
如:int num = i.intValue();
2. Boolean b = Boolean.parseBoolean("false");//将字符"false"转换为布尔型
进制间的转换
十进制转成其他进制:toBinaryString();//转换为二进制
toHexString();//转换为十六进制
toOctalString();//转换为八进制
其他进制转化成十进制:parseInt(String,radix);
int转换成char:
int n = 1;
char ch = (char)(n + '0');
这样打印出来ch的值为1;
不过需要注意(因为char只有一个字节),此处的n只能是0-9之间的字符
char转换成Int:
char ch = '9';
intn = int(ch) - int('0');
此处ch也是‘0’至‘9’的数字字符
集合类到数组的转换
直接的做法就是循环遍历复制一下。
集合类有支持转换的方法,用起来更方便。、
List<Long> roomStatusIds = new ArrayList<Long>();
Long[] statusIds = (Long[]) roomStatusIds.toArray(new Long[roomStatusIds.size()]);
toArray也有不带参数的方法,这样放回的是Object[],但如果再将Object[]强行转换为Long[]会出错。使用toArray(T[] array)这种方式,通过泛型可以运行时再确定返回参数的类型。
数组转集合
String[] array = new String[3];
List<String> list = Arrays.asList(array);
如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法
char[] data={'a','b','c'};
String s=new String(data);
Java数组转字符串
方法1:直接在构造String时转换。
char[] data = {'a', 'b', 'c'};
String str = new String(data);
方法2:调用String类的方法转换。
String.valueOf(char[] ch)
比较两个被封装成了对象的数:
① 基本数据类型的比较用比较运算符。
② 引用数据类型使用compareTo
在数值上比较两个Integer对象。以返回0、正数、负数来判断两个数的大小。
Integer a = new Integer(2);
Integer b = new Integer(5);
System.out.println(a.compareTo(b));
对象想要进行比较,必须通过方法来完成,这个方法就是compareTo
而很多对象都可以进行比较。所以这个方法定义在Comparable接口中。
想要对象具备比较功能,只要实现Comparable接口。
关于自动装箱
关于基本数据类型的计算
首先看几个示例:
②若是字符串与数字相加:则会是一个链接字符串效果。
③若是两个数字在前面:则会先计算数字的和再与字符串相连。
关于"=="和equals
1. ==前后如果是基本数据类型,则是比较值是否相等;如果是引用数据类型则比较的是地址值是否相同
2. equal方法比较的是什么,得看equals如何定义的,object类中定义的equals跟==一样,但比如定义在String中的equals方法
则是用来比较数值是否相等。在TreeSet、HashSet中,还可以复写equals方法进行自定义排序。
关于String
PS这里为了方便查阅,将打印语句写到定义的对象旁了
代码总结string类:
字符串的创建方式:
String str = "abcd";在常量池中创建一个字符串对象,存放于 常量池;
String t1 = new String("abcd");一共有2个对象:在堆内存中创建 String类的对象,并在常量池中创建了“abcd"对象。
String类的特点:
字符串数据一旦初始化就不可以被该变只能改变变量的指向。
字符串对象(字符串常量)都存储在常量池中,在方法区中开辟空间,专门存储常量。
android培训、java培训、期待与您交流! ----------
【基本数据类型】:变量名指向具体的数值 ,一般通过比如int a = 5;来定义。
【引用数据类型】:变量名指向存数据对象的内存地址,即变量名指向hash值,一般通过new 关键字来创建。
┏数值型━┳━整数型:byte short int long
┏基本数据类型━━┫ ┗━浮点型:float double
┃ ┣字符型:char
数据类型 ┗布尔型:boolean
┃ ┏类(class)
┗引用数据类型━━╋接口(interface)
┗数组(array)
想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象。
如:System.out.println("int max:"+Integer.MAX_VALUE);
八种基本数据类型的包装类
byte ——Byte
short ——Short
int ——Integer
long-----Long
float-----Float
double----Double
char----Character
boolean---Boolean
转换
基本数据类型和字符串之间的转换。
基本数据类型转换为字符串
方法 1. 基本数据类型+""
2. 基本数据类型.toString(基本数据类型值);
如:Integer.toString(110);//将110整数变成"34";
字符串转换成基本数据类型(如需对数字进行比较时)
公式:基本数据类型 变量名 = 基本数据类型包装类.parseXxx(XxxString);
在八个基本类型对象包装类中只有一个对象没有parse方法,就是Character.
方法 1. ① 静态调用方式 基本数据类型.parseInt("数字格式的字符串");
如:int num = Integer.parseInt("110");
② 对象调用方式 Integer i = new Integer("110");
如:int num = i.intValue();
2. Boolean b = Boolean.parseBoolean("false");//将字符"false"转换为布尔型
进制间的转换
十进制转成其他进制:toBinaryString();//转换为二进制
toHexString();//转换为十六进制
toOctalString();//转换为八进制
其他进制转化成十进制:parseInt(String,radix);
int转换成char:
int n = 1;
char ch = (char)(n + '0');
这样打印出来ch的值为1;
不过需要注意(因为char只有一个字节),此处的n只能是0-9之间的字符
char转换成Int:
char ch = '9';
intn = int(ch) - int('0');
此处ch也是‘0’至‘9’的数字字符
集合类到数组的转换
直接的做法就是循环遍历复制一下。
集合类有支持转换的方法,用起来更方便。、
List<Long> roomStatusIds = new ArrayList<Long>();
Long[] statusIds = (Long[]) roomStatusIds.toArray(new Long[roomStatusIds.size()]);
toArray也有不带参数的方法,这样放回的是Object[],但如果再将Object[]强行转换为Long[]会出错。使用toArray(T[] array)这种方式,通过泛型可以运行时再确定返回参数的类型。
数组转集合
String[] array = new String[3];
List<String> list = Arrays.asList(array);
如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法
String[] str = {"abc", "bcd", "def"}; StringBuffer sb = new StringBuffer(); for(int i = 0; i < str.length; i++){ sb. append(str[i]); } String s = sb.toString();如果是 “字符数组” 转 “字符串” 可以通过下边的方法
char[] data={'a','b','c'};
String s=new String(data);
Java数组转字符串
方法1:直接在构造String时转换。
char[] data = {'a', 'b', 'c'};
String str = new String(data);
方法2:调用String类的方法转换。
String.valueOf(char[] ch)
比较两个被封装成了对象的数:
① 基本数据类型的比较用比较运算符。
② 引用数据类型使用compareTo
在数值上比较两个Integer对象。以返回0、正数、负数来判断两个数的大小。
Integer a = new Integer(2);
Integer b = new Integer(5);
System.out.println(a.compareTo(b));
对象想要进行比较,必须通过方法来完成,这个方法就是compareTo
而很多对象都可以进行比较。所以这个方法定义在Comparable接口中。
想要对象具备比较功能,只要实现Comparable接口。
关于自动装箱
class Interger { public static void main(String[] args) { Integer s1 = new Integer("123"); Integer s2 = new Integer(123); Integer s3 = 4;//自动装箱 1.5版本新特性:s3为引用数据类型(类类型变量)4视为一个对象:new Integer(4); s3 = s3+2; //s3进行自动拆箱,转化为int类型,计算和2相加,再自动装箱赋给s3 //但当s3 = null 此计算不成立,会抛空指针异常。简化就有弊端:自动装箱拆箱时,要进行null的健壮性判断。 System.out.println(s1.equals(s2));//true Integer 复写了object类中的equals方法,来比较2个数值是否相等 Integer s4= 127; Integer s5= 127; System.out.println(s4==s5);//ture //如果数值在byte类型范围内(-128 ~ 127)。如果该对象数值重复出现多个引用其实是指向同一个Integer对象, //好处:节省空间!但是如果超出了byte范围,就会生产新的Integer对象。 } }
关于基本数据类型的计算
首先看几个示例:
System.out.println('a'+1);//98 System.out.println(“”+'a'+1);//a1 System.out.println("abc"+3+2); // abc32 System.out.println(3+2+"abc"); //5abc小结:①若输出语句中出现字符与数字相加:则会将字符自动转换为对应的数值然后再与数字进行计算
②若是字符串与数字相加:则会是一个链接字符串效果。
③若是两个数字在前面:则会先计算数字的和再与字符串相连。
关于"=="和equals
1. ==前后如果是基本数据类型,则是比较值是否相等;如果是引用数据类型则比较的是地址值是否相同
2. equal方法比较的是什么,得看equals如何定义的,object类中定义的equals跟==一样,但比如定义在String中的equals方法
则是用来比较数值是否相等。在TreeSet、HashSet中,还可以复写equals方法进行自定义排序。
关于String
PS这里为了方便查阅,将打印语句写到定义的对象旁了
class stringdemo { public static void main(String[] args) { String s1 = "abc";//这里的s1是一个类类型的变量,"abc"代表一个对象 s1="abcd";//s1在内存中指向了“abcd” System.out.println(s1);//打印结果abcd 字符串在内存中没有改变,只是s1指向了abcd String s2 = new String("abcd");//代表2个对象①new出的对象②传入的对象“abcd” System.out.println(s1.equals(s2));//ture 在object中equals比较地址值但在String类中复写了equals方法比较字符串 String s3 = new String("abcd"); System.out.println(s1==s3);//false System.out.println(s1==s2);//false s1和s2是2个不同的对象而这里==只能比较同一个对象 String s4 = "abcd"; System.out.println(s1==s4);//true 原因abcd在常量池中已经有了地址值,String s4 也指向了“abcd” String s5 = "abc"; System.out.println(s1==s5);//false 验证了第一个s1已经由在内存中由指向“abc”转为指向“abcd” String s6 = s5.replace('a','z');//zbc System.out.println(s6); //替换此时返回的是一个新的字符串,因为字符串一旦初始化就不能被改变 //如果要替换的字符串不存在,那么返回的还是原来的字符串。String s6 = s5.replace('n','z'); String s7 = "zhangsan,lisi,wangwu"; String[] arr = s7.split(",");//切割 for (int x = 0;x<arr.length ;x++ ) { System.out.print("arr["+x+"]="+arr[x]);//arr[0]=zhangs;aarr[1]=lisi;arr[2]=wangwu } } }
代码总结string类:
字符串的创建方式:
String str = "abcd";在常量池中创建一个字符串对象,存放于 常量池;
String t1 = new String("abcd");一共有2个对象:在堆内存中创建 String类的对象,并在常量池中创建了“abcd"对象。
String类的特点:
字符串数据一旦初始化就不可以被该变只能改变变量的指向。
字符串对象(字符串常量)都存储在常量池中,在方法区中开辟空间,专门存储常量。
相关文章推荐
- 黑马程序员——JAVA基础之基本数据类型包装类和1.5JDK新特性装箱
- 黑马程序员_java-基本数据类型的对象包装类-Math类-Random类-Scanner类<六>
- 黑马程序员——Java基础:String类、StringBuffer、基本数据类型对象包装类
- 黑马程序员---java基本数据类型以及其包装类
- 黑马程序员——java第十三天:String类、StringBuffer、StringBuilder、基本数据类型对象包装类、进制转换
- 黑马程序员——java基础-String类和基本数据类型包装类
- Java基础---String类和基本数据类型包装类 (黑马程序员)
- 黑马程序员——Java基础之String类、基本数据类型包装类
- 黑马程序员-JAVA基础-基本数据类型对象包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 【黑马程序员】------java基础----String类、StringBuffer(StringBuilder)、基本数据类型包装类
- 黑马程序员 java 基础 毕向东 面向对象 String StringBuffer StringBuilder 基本数据类型包装类
- 黑马程序员--java基础复习之String类StringBuffer及基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员--Java基础之String类和基本数据类型对象包装类
- 黑马程序员 Java自学总结十二 String类和基本数据类型包装类
- 黑马程序员_日记29_Java基本数据类型对象包装类
- 黑马程序员_Java基础_泛型应用 和 基本数据类型对象包装类