基本类型 | 对应的包装类 |
byte | Byte |
short | Short |
int | integer |
long | Long |
float | Float |
double | Double |
char | Charcter |
boolean | Boolean |
1. 基本数据类型对象包装类中的方法 static String toString(基本类型);2. String类中的方法: static String valueOf(基本类型)3. 基本类型数据 +“ ”;【重点要掌握的就是:】 字符串---->基本类型数据。 返回值类型——>基本类型 ;参数——>字符串。 基本数据类型 变量名 = 基本数据类型包装类.parseXxx(XxxString); Long l = Long.parseLong("4546545646546"); System.out.PRintln(Integer.parseInt("23") + 1); 在八个基本类型对象包装类中只有一个对象没有parse方法,就是Character.【类型转换错误】——NumberFormatException——数字格式异常——我碰到了,因为我多加了一个 空格。【Integer中要掌握的方法】涉及到一个进制转换的问题。十进制-->其他进制。二进制:static String toBinaryString(int);16进制:static String toHexString(int);八进制:static String toOctalString(int);其他进制——>转成十进制; Integer.toString(6 , 2); 将6转换为二进制。 parseInt(intString , radix); System.out.println(Integer.parseInt("110") , 2);————————————————————————————————【基本数据类型值 和 基本类型数据对象之间的转换】 使用构造函数——Integer(); 即可以接受基本数值,也可以接收基本数值的字符串形式。 可以使用基本类型对象中的方法。 static Integer valueOf(int);【基本类型的对象 和 基本数据类型数值】 int intValue();如: Integer i = new Integer(34); int num = i.intValue( ); System.out.println(num);————————————————————————————————————————————【如果两数被封装成了对象该如何比较呢?】 【 基本数据类型的比较——用比较运算符; 引用数据类型使用compareTo进行比较。】 int compareTo( Integer anotherInteger ) 在数字上比较两个Integer对象。在数值上比较两个Integer对象。以0 正数 负数 比较两个数多的大小。Integer a = new Integer(7);Integer b = new Integer(5);System.out.println(a.compareTo(b));【重点】对象想要进行比较,必须通过方法来完成,这个方法就是compareTo。而很多对象都可以进行比较。所以这个方法定义在Comparable接口中。想要对象具备比较功能,只要实现Comparable接口。【练习题】。————————————————————————————————————————————————【基本数据类型对象包装类JDk1.5以后的新特性】——【自动拆箱,装箱】简化书写。Integer i = new Integer(5);基本数据类型对象包装类,对象创建的简化写法Integer i = 5;1. Integer i = 5;(其实在内存中也是通过 new Integer(5)这种方式创建的!)这种方式成为——自动装箱,Integer.valueOf(5)自动完成了对象创建的动作。2. 在进行 i = i + 5,运算时——= 右边的i 会先转成基本数据值(自动拆箱)i.intValue(),其实质为:i = i.intValue() + 5 ;然后再和5进行加法运算。= 右边运算完的结果,再次被自动装箱变成Integer对象赋给i.一旦简化就有弊端:多具备一个值null. 使用自动装箱拆箱时,要进行null的健壮性判断。【实例】Integer x = null;x = x.intValue() + 4; x为null 不能调用方法,此时会发生:NullPointerException异常。————————————————————————————————Boolean b = true; boolean b = true;的区别答:前者:类类型变量指向一个对象,true为一个对象; 后者:true为基本类型变量。————————————————————————————————在JdK1.5的新特性自动装箱中,如果数值在byte类型范围内(-128 ~ 127)。如果该对象数值重复出现多个引用其实是指向同一个Integer对象,节省空间!但是超出了byte范围,都会生产新的Integer对象。Integer m = 127;Integer n = 127;System.out.println( m == n); //trueSystem.out.println(m.equals(n)); //true____________________________________Object x = 5;Object x 接受到了一个Integer对象,自动装箱。然而 Object不可以接受基本数据类型。——————————————————————————————————————【面试题】——"34 9 -7 67 25"要求对这个字符串中的数值进行从小到大的排序,生成一个数值有序的字符串。【必须会】思路:1. 把其中的数拿出来,——对字符串进行切割。2. 对数进行排序3. 再追加成字符串。步骤:1.split;——这个方法我还没掌握,怎么用。【】——数组排序 2.定义一个int数组 将 字符串数组——>int数组 3.对int数组排序; 4. 将int数组转成字符串数组。代码体现:[java] view plain copy print?/** * 需求:"34 9 -7 67 25"要求对这个字符串中的数值进行从小到大的排序,生成一个数值有序的字符串。 * @author Administrator * */ public class StringTestint { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //要操作的目标 String s = "34 9 -7 67 25"; //用空格对原字符串进行切割,转成字符串数组; String[] s1 = s.split(" "); //定义int[]数组,用来存放整型数据 int[] arr = new int[s1.length]; //将字符串数组转成int类型的数组。 for(int i = 0 ; i < s1.length; i++) arr[i] = Integer.parseInt(s1[i]); //对int类型的数组进行排序 for(int i = 0 ; i < s1.length;i++){ for(int j = i+1 ; j < s1.length;j++){ if(arr[i] > arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } //定义字符串缓冲区,并将int类型的数组转换为 字符串类型的数组。 StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.length; i++) { if(i != arr.length - 1) sb.append(arr[i] + " "); else sb.append(arr[i]); } System.out.println(sb); } } 代码优化:[java] view plain copy print?import java.util.Arrays; public class WrapperTest2 { 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); } }2.适当练习valueOf()、xxxValue()、parseXxx()方法。3.类型转换(以下为该周作业)。public class StudyDiary01 { public static void main(String[] args){ //String --> int String s = "111"; int i1 = Integer.parseInt(s); //直接使用静态方法,不会产生多余的对象,但会抛出异常 System.out.println("String --> int : i1=" + i1); int i2 = Integer.valueOf(s).intValue(); //Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象 System.out.println("String --> int : i2=" + i2); int i3 = Integer.parseInt(s,10);//若int i = Integer.parseInt("123",16);即可以看成i = 1*16*16+2*16+3 System.out.println("String --> int : i3=" + i3 + '/n'); //int --> String int j = 222; String t1 = String.valueOf(j);//直接使用String类的静态方法,只产生一个对象 System.out.println("int --> String : t1=" + t1); String t2 = Integer.toString(j); //直接使用静态方法,产生新的对象,会抛出异常 System.out.println("int --> String : t2=" + t2); String t3 = "" + j; //会产生两个String对象 System.out.println("int --> String : t3=" + t3 + '/n'); //int --> Integer int m = 333; Integer n1 = m; //装箱 System.out.println("int --> Integer:n1=" + n1); Integer n2 = new Integer(n1); System.out.println("int --> Integer:n2=" + n2); Integer n3 = Integer.valueOf(n2); System.out.println("int --> Integer:n3=" + n3 + '/n'); //Integer --> int Integer x=444; int y1 = x; //拆箱 System.out.println("Integer --> int:y1=" + y1); int y2 = x.intValue(); System.out.println("Integer --> int:y2=" + y2); int y3 = Integer.valueOf(x); System.out.println("Integer --> int:y3=" + y3 + '/n'); //String --> Integer String r = "555"; Integer k1 = Integer.valueOf(r); //这种方法常用 System.out.println("String --> Integer:k1=" + k1); Integer k2 = new Integer(r); System.out.println("String --> Integer:k2=" + k2); Integer k3 = Integer.parseInt(r); System.out.println("String --> Integer:k3=" + k3); Integer k4 = Integer.parseInt(r,10); System.out.println("String --> Integer:k4=" + k4 + '/n'); //Integer --> String Integer l = 666; String z1 = String.valueOf(l); System.out.println("Integer -->Stringf:z1=" + z1); String z2 = l.toString(); System.out.println("Integer -->Stringf:z2=" + z2); String z3 = "" + l; System.out.println("Integer -->Stringf:z3=" + z3 + '/n'); } }(1)String转换为intint i = Integer.parseln(str);int i = Integer.valueOf(str).intValue();(2)String转换为Integer 两种构造方法的区别,Character只有一种(3)int转换为String String s = s.valueOf(i); String s = Integer.toString(i); String s = “”+i;(4)int转换为Integer(5)Integer转换为String(6)Integer转换为int(7)Integer转换为String4.通过键盘输入,初始化两个数将这两个数值交换后,输出显示后的数据。import java.util.Scanner; public class StudyDiary02 { public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入第一个值:"); int a = input.nextInt(); System.out.print("请输入第二个值:"); int b = input.nextInt(); System.out.println("交换之前的两个值为"+a+","+b); int c; c = a; a = b; b = c; System.out.println("交换之后的两个值为"+a+","+b); } } 5.定义一个五位整数,求各个位上的数的和import java.util.Scanner; public class StudyDiary03 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("请输入一个五位整数:"); int i = in.nextInt(); int sum = 0; if (i < 10000 || i > 99999) { System.out.println("输入有误!"); } else { for (int j = 0; j < 5 ; j++ ) { sum += i % 10; i = i / 10; } System.out.println("该五位整数各位数上之和为sum=" + sum ); } } } 6.根据天数计算周数和剩余的天数。天数通过键盘输入。import java.util.Scanner; public class StudyDiary04 { public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.print("请输入要转换的天数:"); int day = in.nextInt(); int week = day / 7; day = day % 7; System.out.println("为" + week + "周," + day + "天。"); } } 7.学会使用API文档,看一看String类的所有方法。(ing......)8.明确什么是引用类型,和C++的指针有什么异同,掌握java中数组的基本知识,例如(动态/静态)初始化,赋值,求大小,关于大小改变与C/C++中的区别。
新闻热点
疑难解答