《黑马程序员》java笔记->基本数据类型包装类及自动拆箱装箱原理,数组排序练习字符串切割

原创 2013年06月16日 17:37:40

------- android培训java培训、期待与您交流! ----------



/*

* 基本数据类型对象包装类。

* 想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象。
* 为啥呢?因为在对象描述中就可以定义更多的属性和行为对该基本类型数据进行操作。

* byte Byte
* short Short
* int Integer
* long Long
* float Float
* double Double
* char Character
* boolean Boolean

* 基本类型变成对象的好处:
* 你知道int类型的取值范围是多少吗?
* 这就应该去查Integer对象。

* 对象包装类的好处:可以将基本数据和字符串之间进行互相转换。

* 基本类型数据--->字符串。
* 1,基本数据类型对象包装类中的方法 static String  toString(基本类型);
* 2,String类中的方法 static String valueOf(基本类型); 
* 3,基本类型数据+"" 

* 重点要掌握的就是:
* 字符串--->基本类型数据。
* 基本类型     参数,字符串。 
* 基本类型  parse基本类型类名(是基本类型格式的字符串)
*
* Xxx  parseXxx(XxxString);//NumberFormatException
* long parseLong(longString);
* boolean parseBoolean(booleanstring);
*

* 在八个基本类型对象包装类中只有一个对象没有parse方法。就是Character

*/

// System.out.println(Integer.MAX_VALUE);

// System.out.println(Integer.parseInt("abc")+1);

/*
* 单独讲一下Integer。
* 涉及到一个进制转换问题。

* 十进制-->其他进制。
* 二进制:static String toBinaryString(int);
* 十六进制 static String  toHexString(int);
* 八进制 static String toOctalString(int);


* 其他进制-->十进制。 
* int parseInt(intString,radix);
*

*/

// System.out.println(Integer.toBinaryString(-6));
// System.out.println(Integer.toString(6,2));
// System.out.println(Integer.parseInt("110",2));


/*
* 基本数据类型值和基本类型数据对象之间的转换。

* 基本数据类型值---->基本类型数据对象。
* 使用构造函数。即可以接收基本数值,也可以接收基本数值的字符串形式。
* 可以使用基本类型对象中的方法。 static Integer  valueOf(int);

* 基本类型的对象--->基本数据类型数值。
* int intValue();


*
*/

Integer i = new Integer("34");
int num = i.intValue();
System.out.println(num+1);
}



---------------------------------------------------------------------------------------------------------------------------------------------------------------

public static void main(String[] args) {


/*
* 基本数据类型对象包装类jdk1.5后的新特性。 
* 新特性的出现无非就是简化书写。

* 让这些对象可以象操作基本数值一样进行运算。
*/

// Integer i = new Integer(5);

//基本数据类型对象包装类,对象创建的简化写法。
Integer i = 5;//i = new Integer(5);自动装箱。自动完成了对象创建的动作。Integer.valueOf(5);

i  = i/*.intValue()*/ + 5;//=右边的i会先转成基本数据值(自动拆箱),然后再和5进行加法运算。 
//=右边运算完的结果,再次被自动装箱变成Integer对象赋给i。

//一旦简化就有弊端:多具备一个值null。记住要使用自动装箱拆箱时,建议进行null的健壮性判断。
// Integer x = null;//
// x = x.intValue() + 4;


// Boolean b = true;和boolean b = true;有什么不同?



Integer a = new Integer(127);
Integer b = new Integer(127);
System.out.println(a==b);//false
System.out.println(a.equals(b));//true
System.out.println("---------------------------------");
Integer m = 127;
Integer n = Integer.valueOf(127);

/*
* 在jdk1.5后的新特性自动装箱中,
* 如果数值在byte类型范围内。如果该对象数值重复出现,多个引用其实指向的同一个Integer对象。
* 但是如果超出byte范围,都会生成新的Integer对象
*/
System.out.println(m==n);//true
System.out.println(m.equals(n));//true


/*
* 解答同学一些疑惑:
* jdk1.5后的新特性就是简化书写,
* 完成自动装箱和拆箱的动作。
* 装箱:Integer.valueOf(int); Xxx.valueOf(xxx);
* 拆箱:intValue() xxxValue():  booleanValue();
*/



show(5);

}

public static void show(Object x){//Object x = 5;//Object x 接收到一个Integer对象。
System.out.println("x="+x);
}

--------------------------------------------------------------------------------------------------------------------------------------


public static void main(String[] args) {


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方法,
//建立Integer自己的比较相同的方式,只要对象中的整数相等即为对象相同。


// int a = 3,b = 4;
// System.out.println(a>b);//基本数据类型的比较.

//如果两个数被封装成了对象该如何比较呢、
//应该该对象中提供比较行为。 

Integer a = new Integer(7);
Integer b = new Integer(5);
System.out.println(a.compareTo(b));


/*
* 对象想要进行比较,必须通过方法来完成,这个方法就是compareTo。
* 而很多对象都可以进行比较。所以这个方法定义在Comparable接口中。
* 想要对象具备比较功能,只要实现Comparable接口。

* 基本类型值用比较运算符进行比较。
* 引用数据类型使用compareTo进行比较。 

*/

}

-----------------------------------------------------------------------------------------------------------------------------

private static final String SPACE = " ";
/**
* @param args
*/
public static void main(String[] args) {


/*
* 综合练习:
* "34 9 -7 12 67 25"要求对这个字符串中的数值进行从小到大的排序,
* 然后生成一个数值有序的字符串。

* 思路:
* 1,看到排序,就想要到了数组
* 2,那数组中的元素怎么获取呢?数值都在字符串中。
* 3,先从字符串中获取到这些具体的数值。怎么获取呢?
* 4,发现这个字符串居然有规律。数值之间都是由空格隔开的。
* 可以对字符串进行切割。
* 5,将获取的数据存储到数组中并排序,在将数组转成字符就可以了。哦了。


* 步骤:
* 1,将字符串切割成字符串数组。split。
* 2,定义一个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) {

//1,将字符串中的数值通过指定的规则进行切割获取字符串数组。
String[] str_nums = toStringArray(str);

//2,将字符串数组转成int数组。 
int[] nums = toIntArray(str_nums);

//3,对int数组排序;
sortIntArray(nums);

//4,将int数组变成字符串。 
return arrayToString(nums);
}
/*
* 将int数组变成字符串。 
*/
private static String arrayToString(int[] nums) {
//1,创建字符串缓冲区。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < nums.length; i++) {
if(i!=nums.length-1)
sb.append(nums[i]+SPACE);
else
sb.append(nums[i]);
}

return sb.toString();
}


/*
* 对int数组排序。 
*/
private static void sortIntArray(int[] nums) {
Arrays.sort(nums);
}


/*
* 将字符串数组转成int数组。 
*/
private static int[] toIntArray(String[] str_nums) {
//1,先定义一个int数组。 
int[] arr = new int[str_nums.length];

//2,对字符串数组进行遍历。
for (int i = 0; i < str_nums.length; i++) {
//将数组格式的字符串转成整数。存储到arr数组中。 
arr[i] = Integer.parseInt(str_nums[i]);
}


return arr;
}
/*
* 将字符串转成字符串数组。 
*/
private static String[] toStringArray(String str) {

return str.split(SPACE);
}

-----------------------------------------------------------------------------------------------------------------------------


Java包装类、自动装箱与拆箱知识总结

因为在学习集合时知道集合里存放的对象都是Object类型,取出的时候需要强制类型转换为目标类型(使用泛型集合不需要),如int a = (Integer)arrayList.get(0);然后我们就会...
  • zhangliangzi
  • zhangliangzi
  • 2016年01月21日 08:36
  • 3241

Java支持的数据类型有哪些?什么是自动拆装箱?

java中的8种基本数据类型:boolean byte char short int float double long 自动拆装箱的问题引入:由于在一开始学习java的时候,”万物皆对象“这种面向对...
  • andy_px
  • andy_px
  • 2016年03月03日 00:03
  • 3499

黑马程序员——JAVA基础之基本数据类型包装类和1.5JDK新特性装箱

------- android培训、java培训、期待与您交流! ----------   基本数据类型包装类:   byte Byte short Short in...
  • run_wind
  • run_wind
  • 2014年11月27日 15:24
  • 322

黑马程序员——Java高新技术——JDK4.5版本新特性枚举、高级for循环、静态导入、可变参数、基本数据类型的自动装箱与拆箱

----------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ----------------------Java培训、Android培训、iOS培训、.Net培训、...
  • lifeoflive521
  • lifeoflive521
  • 2015年05月08日 11:34
  • 467

黑马程序员—java基础学习--String字符串类,基本数据类型包装类

  • a253852284
  • a253852284
  • 2014年10月28日 13:22
  • 375

基本数据类型对象包装类、自动装箱和自动拆箱

-------android培训、Java培训、期待与您交流!------- 1  基本数据类型对象包装类 基本数据类型         引用数据类型(对象包装类) byte          ...
  • miqi0533
  • miqi0533
  • 2014年02月19日 17:43
  • 987

JAVA学习笔记22——基本数据类型包装类+自动装、拆箱+初识Date类

最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。 开始第22篇,首先来介绍JAVA的包装类。JAVA常见的包装类有Ma...
  • u014440351
  • u014440351
  • 2015年01月27日 16:00
  • 549

基本数据类型对象包装类和自动装箱自动拆箱技术

一、基本数据类型对象包装类 byte Byte short Short int  Integer long Long boolean Boolean flaot Float doub...
  • u011528448
  • u011528448
  • 2015年02月06日 19:02
  • 307

Java基础学习总结(122)——Java八种基本数据类型的包装类及其装箱拆箱详解

前言   Java语言是面向对象编程语言,但不是纯面向对象语言。其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性、没有方法可调用。 沿用它们只是为了迎合人类...
  • u012562943
  • u012562943
  • 2017年12月14日 09:47
  • 329

黑马程序员——Java学习笔记 String类和基本数据类型对象包装类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • a19910118
  • a19910118
  • 2015年05月05日 19:53
  • 198
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《黑马程序员》java笔记->基本数据类型包装类及自动拆箱装箱原理,数组排序练习字符串切割
举报原因:
原因补充:

(最多只允许输入30个字)