<h1>基本数据类型对象的包装类</h1> | |
<ul> | |
<li>基本数据类型分装成对象的好处在于可以在对象中定义更多的功能方法操作该对象中定义更多的功能方法操作该数据。</li> | |
<li>常见的操作之一:用于基本的数据类型与字符串之间的装换。</li> | |
<li>例如integer的parseInt方法,intValue()方法。</li> | |
<li>基本数据类型对象的包装类。</li> | |
<li>想要对基本数据类型进行更多的操作,最方便的方式就是将其分装对象</li> | |
<li>为啥呢?因为在对象描述中就可以定义更多的属性,因为在对象描述中就</li> | |
<li>可以定义更多的属性和行为对改基本类型进行操作</li> | |
<li>byte Byte</li> | |
<li>short Short</li> | |
<li>int Integer</li> | |
<li>long Long</li> | |
<li>float Float</li> | |
<li>double Double</li> | |
<li>char Charater</li> | |
<li>boolean Boolean</li> | |
<li>基本类型变成对象的好处</li> | |
<li>你知道int类型的取值范围是多少码?</li> | |
<li>基本数据类型封装类</li> | |
<li>可以将基本数据和字符串之间进行装换。</li> | |
<li>基本数据类型--->字符串</li> | |
<li>String 静态 toString(基本数据类型) </li> | |
<li>还有String类中方法Static String valueOf(基本类型)</li> | |
<li>基本类型数据+""</li> | |
<li>重点要掌握的就是:字符串-->基本数据类型</li> | |
<li>基本类型 参数字符串 不需要对象就能用</li> | |
<li>举例数字 parseInt(字符串基本类型数据格式的字符串)</li> | |
<li> | |
<p>在把个包装类有一个对象没有parse方法,就是Character</p> | |
<p>System.out.println("23"+1); | |
System.out.println(1+Integer.parseInt("23")); | |
//java.lang.NumberFormatException数字格式异常 | |
System.out.println(1+Integer.parseInt("abc")); | |
单独讲一下Integer | |
涉及到一个进制装换 | |
十进制-->其他进制</p> | |
</li> | |
</ul> | |
<blockquote> | |
<p>二进制 static String toBinaryString(int); | |
十六进制 static String toHexString(int); | |
八进制 static String toOctalString(int) | |
System.out.println(Integer.toBinaryString(6)); | |
System.out.println(Integer.toString(6,2));第一个参数是要转换的数,第二个参数是进制数 | |
其他进制转成十进制 | |
System.out.println(Integer.parseInt("110",2));第一参数是这个数字的字符串形式,第二个参数是这个数什么进制。</p> | |
<p>基本数据类型之间的互相装换</p> | |
<p>基本数据类型值和基本数据对象之间装换。</p> | |
<p>基本数据类型的值---->基本数据类型 | |
使用构造函数,可以接受基本数值,也可以是字符串 | |
使用基本数据类型对象中的方法 static Integer valueOf(int) | |
基本类型对象--->基本数据类型数值 | |
例如 | |
Integer i = new Integer(int value); | |
int num =i.intValue(); | |
比较包装对象之间的 | |
Integer x = new Integer(34); | |
Integer y = new Integer("34"); | |
System.out.println(x==y);//false | |
System.out.println(x.equals(y));//true | |
因为Integer覆盖类Object中的equals中的equals方法,建立Integer自己比较相同的方式,只要对象中的整数相等,即为对象相同 | |
int a =3,b=4; | |
System.out.println(a>b);//基本数据类型的比较。</p> | |
</blockquote> | |
<p>//如果两个数封装成了对象该如何比较呢? | |
应该对象中提供比较行为 | |
Integer a = new Integer(3); | |
Integer b = new Integer(4); | |
System.out.println(a>b);</p> | |
<blockquote> | |
<p>返回三个值,相等返回0,如果小返回负数,大了返回整数 | |
System.out.println(a.compartTo(b));</p> | |
</blockquote> | |
<p>对象想要进行比较,必须通过方法来完成,这个方法就是compare | |
想要对象具备比较功能,只能实现Comparable接口 | |
基本数据类型值比较运算符进行比较 | |
引用数据类型使用compare</p> | |
<p>在jdk1.5之后,基本数据类型对象包装类的新特性1’ | |
JDK1.5以后,简化了定义方式。 | |
Integer x = new Integer(4)可以直接写成 | |
Integer x =4;//自动装箱。 | |
x=x+5;自动拆箱。通过intValue方法 | |
需要注意 | |
在使用时,Integer x = null;上面的的代码就会出现NullPointerException. | |
Integer i = new Integer(5); | |
//基本数据类型对象包装类,对象创建的简化写法 | |
Integer i = 5;//自动装箱,自动完成了对象创建的动作。Integer。valueof | |
i=i +5;//自动拆箱右边的i会转成数据(自动拆箱),然后再和进行拆箱.intValue()对象赋给i | |
//一旦简化,就有弊端:多具备一个值null。记住要使用自动装箱拆箱时,建议进行null的健壮性判断 | |
Integer x= null; | |
x=x.intValue()+4; | |
//Boolean b =true和boolean =true;有什么不同? | |
一个b是对象引用,一个是基本数据类型 | |
新特性 2 | |
Integer a =new Integer(127); | |
Integer b = new Integer(127); | |
System.out.println(a==b);//false | |
System.out.println(a.equals(b)); | |
System.out.println("----------"); | |
Integer m = 127; | |
Integer n = 127; | |
System.out.println(m==n);//true | |
System.out.println(m.equals(n));//true | |
System.out.println("----------"); | |
Integer m = 128; | |
Integer n = 128; | |
System.out.println(m==n);//false | |
System.out.println(m.equals(n));//true</p> | |
<blockquote> | |
<p>在jdk1.5后新特性自动装箱中,如果数值在byte类型范围内,如果该对象数值重复出现,多个引用其实指向同一个Integer对象。但是超出byte范围,都会生产新的Integer对象。 | |
show(5);//这个5就是个Integer对象 | |
public static void show(Object x){//Object x 接受到一个Integer对象。 | |
System.out.println("x="+x); | |
}</p> | |
</blockquote> | |
<pre><code>package liwei.www.p1.stringbuffer; | |
import java.util.Arrays; | |
public class WrapperDemo1 { | |
/** | |
* @param args | |
*/ | |
public static void main(String[] args) { | |
// TODO Auto-generated method stub | |
/*综合连习 "34 9 -7 12 67 25"要求对这个字符串中的数值从小到大排序 | |
* 然后生成一个有序的字符串。 | |
* */ | |
/* | |
* 思路 | |
* 首先看到排序就想到了数组 | |
* 数组中的元素怎么获取 | |
* 把字符串拆分成数组 | |
* 4发现这个字符串居然有规律 | |
* 可以对字符串进行切割 | |
* 5将获取的数据存储到数组中排序,在将数组转成字符就可以 | |
*/ | |
/* | |
* 步骤 | |
* 将字符串切割组成的字符串、split | |
* 定义一个int数组将字符串中的元素转成整数存储到int数组中 | |
* 3对int数组排序、 | |
* 4将int数组排序后转成一个字符串。 | |
* | |
*/ | |
String str = "34 9 -7 12 67 25"; | |
str =sortStringNumber(str); | |
System.out.println(str); | |
} | |
public static String sortStringNumber(String str) { | |
// TODO Auto-generated method stub | |
//1将字符串的数组通过制定进行切割获取字符串数组 | |
String[] str_num = toStringArray(str); | |
//将字符串数组转化成int数组 | |
int [] num = toIntArray(str_num); | |
//数组排序 | |
sortIntArray(num); | |
//将int数组编成字符串 | |
return arrayToString(num) ; | |
} | |
private static String arrayToString(int[] num) { | |
// TODO Auto-generated method stub | |
//创建缓冲区 | |
StringBuilder sb = new StringBuilder(); | |
for(int i =0;i<num.length;i++){ | |
if(i!=num.length-1){ | |
sb.append(num[i]+" "); | |
}else{ | |
sb.append(num[i]); | |
} | |
} | |
return sb.toString(); | |
} | |
//数组排序 | |
private static void sortIntArray(int[] num) { | |
// TODO Auto-generated method stub | |
Arrays.sort(num); | |
} | |
private static int[] toIntArray(String[] str_num) { | |
// TODO Auto-generated method stub | |
int[] in = new int [str_num.length]; | |
for(int i =0;i<str_num.length;i++){ | |
in[i]= Integer.parseInt(str_num[i]); | |
} | |
return in; | |
} | |
private static String[] toStringArray(String str) { | |
// TODO Auto-generated method stub | |
return str.split(" "); | |
} | |
} | |
</code></pre> | |
<p>小知识点就是加上空格,如果是固定可以把它定义成全局的常量 | |
private static final String SPACE =" ";</p> |
基本数据类型包装l类
最新推荐文章于 2024-03-06 22:50:17 发布