博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】Java学习笔记024 - 包装类
阅读量:7062 次
发布时间:2019-06-28

本文共 15290 字,大约阅读时间需要 50 分钟。

1 package cn.temptation; 2  3 public class Sample01 { 4     public static void main(String[] args) { 5         // 之前对于基本数据类型都是直接进行声明操作,缺少现成的成员方法可以使用 6         // Java针对基本数据类型缺少成员方法的问题,提供了解决方案 ----- 包装类(WrapClass),对基本数据类型进行包装的类 7          8         /* 9          *         基本数据类型            对应的包装类10          *         byte                Byte11          *         short                Short12          *         int                    Integer13          *         long                Long14          * 15          *         float                Float16          *         double                Double17          * 18          *         char                Character19          * 20          *         boolean                Boolean21          */22         23         // 包装类Integer:Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。 24         25         // Integer类的常用字段:26         // 1、static int MAX_VALUE :值为 2^31-1 的常量,它表示 int 类型能够表示的最大值。 27         // 2、static int MIN_VALUE :值为 -2^31 的常量,它表示 int 类型能够表示的最小值。 28         System.out.println("Integer.MAX_VALUE:" + Integer.MAX_VALUE);        // 214748364729         System.out.println("Integer.MIN_VALUE:" + Integer.MIN_VALUE);        // -214748364830         31         // Integer类的构造函数32         // 1、Integer(int value) :构造一个新分配的 Integer 对象,它表示指定的 int 值。 33         // 2、Integer(String s) :构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 34         int i = 2;35         Integer integer1 = new Integer(i);36         System.out.println("integer1:" + integer1);            // 237         System.out.println(integer1 instanceof Integer);    // true38         // 语法错误:Syntax error, insert "Dimensions" to complete ArrayType39 //        System.out.println(integer1 instanceof int);40         System.out.println("-----------------------------------------");41         42         String str = "123";43         Integer integer2 = new Integer(str);44         System.out.println("integer2:" + integer2);45         System.out.println(integer2 instanceof Integer);    // true46         47         String strEx = "java";48         // 执行异常:java.lang.NumberFormatException: For input string: "java"49         Integer integer3 = new Integer(strEx);50         System.out.println("integer3:" + integer3);51         System.out.println(integer3 instanceof Integer);52     }53 }
1 package cn.temptation; 2  3 public class Sample02 { 4     public static void main(String[] args) { 5         /* 6          * Integer包装类的常用成员方法: 7          * 1、static String toBinaryString(int i) :以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。  8          * 2、static String toHexString(int i) :以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。  9          * 3、static String toOctalString(int i) :以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。 10          */11         System.out.println(Integer.toBinaryString(3));        // 1112         System.out.println(Integer.toHexString(10));        // a13         System.out.println(Integer.toOctalString(9));        // 1114     }15 }
1 package cn.temptation; 2  3 public class Sample03 { 4     public static void main(String[] args) { 5         /* 6          * int类型   和   string类型之间的转换 7          *  8          * int类型----->string类型 9          * string类型----->int类型10          */11         12         // int类型----->string类型13         int i = 2;14         15         // 方法1、使用String类的valueOf()方法16         String str1 = String.valueOf(i);17         System.out.println(str1);18         19         // 方法2、使用int类型和空字符串做加法20         String str2 = i + "";21         System.out.println(str2);22         23         // 方法3、使用Integer包装类作为中间桥梁,使用Integer的构造函数和toString方法24         Integer integer1 = new Integer(i);25         System.out.println(integer1.toString());26         27         // 方法4、使用Integer包装类的toString(int i)方法28         System.out.println(Integer.toString(i));29         30         System.out.println("------------------------------------------------");31         32         // string类型----->int类型33         String str = "123";34         35         // 方法1、使用Integer包装类作为中间桥梁,使用Integer的构造函数 和 intValue方法36         Integer integer2= new Integer(str);37         System.out.println(integer2.intValue());38         39         // 方法2、使用Integer包装类的parseInt方法40         int j = Integer.parseInt(str);41         System.out.println(j);42         43         // 执行异常:java.lang.NumberFormatException: For input string: "java"44         System.out.println(Integer.parseInt("java"));45     }46 }
1 package cn.temptation; 2  3 public class Sample04 { 4     public static void main(String[] args) { 5         /* 6          * Integer包装类的常用成员方法: 7          * 1、static String toString(int i, int radix) :返回用第二个参数指定基数表示的第一个参数的字符串表示形式。 8          * 2、static int parseInt(String s, int radix) :使用第二个参数指定的基数,将字符串参数解析为有符号的整数。   9          */10         System.out.println(Integer.toString(2, 2));            // 1011         System.out.println(Integer.toString(10, 16));        // a12         System.out.println(Integer.toString(8, 8));            // 1013         14         System.out.println(Integer.toString(10, -2));        // 1015         System.out.println(Integer.toString(17, 17));        // 1016         System.out.println(Integer.toString(10, 17));        // a17         System.out.println(Integer.toString(16, 17));        // g18         19         // 查看Integer包装类的toString方法20         //if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)21         //    radix = 10;22         // 查看Character包装类的字段23         //public static final int MIN_RADIX = 2;24         //public static final int MAX_RADIX = 36;25         26         System.out.println("------------------------------------");27         28         System.out.println(Integer.parseInt("2", 10));        // 229         System.out.println(Integer.parseInt("7", 8));        // 730         System.out.println(Integer.parseInt("F", 16));        // 1531         System.out.println(Integer.parseInt("10", 16));        // 1632         33     }34 }
1 package cn.temptation; 2  3 public class Sample05 { 4     public static void main(String[] args) { 5         /* 6          * 自动装箱(boxing)   和  自动拆箱(unboxing) 7          *  8          * 自动装箱:把基本数据类型装换为包装类类型(值类型----->引用数据类型) 9          * 自动拆箱:把包装类类型装换为基本数据类型(引用数据类型----->值类型)10          */11         12         // 自动装箱13         Integer integer1 = new Integer(2);14         System.out.println(integer1);15         16         // 简化写法:把int类型的数字字面量直接赋值给Integer包装类的变量17         Integer integer2 = 3;18         // 通过反编译class文件,看到19 //        Integer integer2 = Integer.valueOf(3);20         System.out.println(integer2);21         22         System.out.println("---------------------------------------");23         24         Integer integer3 = 4;25         integer3 += 5;26         // 通过反编译class文件,看到27 //        Integer integer3 = Integer.valueOf(4);            // 自动装箱28 //        integer3 = Integer.valueOf(integer3.intValue() + 5);        // 先做自动拆箱,拿着基本数据类型int和另一个基本数据类型int做加法,再做自动装箱29         System.out.println(integer3);30         31         System.out.println("---------------------------------------");32         33         Integer integer4 = null;34         System.out.println(integer4);35         // 注意:37行语句上已经有警告:Null pointer access: The variable integer4 can only be null at this location36         // 执行异常:java.lang.NullPointerException37 //        System.out.println(integer4.toString());38         39         // 注意:41行语句上已经有警告:Null pointer access: This expression of type Integer is null but requires auto-unboxing40         // 执行异常:java.lang.NullPointerException41 //        integer4 += 6;42 //        System.out.println(integer4);43         44         // 对于包装类类型的对象进行非空验证45         // 注意:47行语句上已经有警告:Dead code,因为eclipse判断了integer4就是null46         if (integer4 != null) {47             integer4 += 6;48             System.out.println(integer4);49         }50     }51 }
1 package cn.temptation; 2  3 public class Sample06 { 4     public static void main(String[] args) { 5         // == 比较的是包装类对象的地址,自然不同;equals比较的是内容,自然相同 6         Integer integer1 = new Integer(127); 7         Integer integer2 = new Integer(127); 8         System.out.println(integer1 == integer2);        // false 9         System.out.println(integer1.equals(integer2));    // true10         11         System.out.println("----------------------------------------");12         13         // == 比较的是包装类对象的地址,自然不同;equals比较的是内容,自然相同14         Integer integer3 = new Integer(128);15         Integer integer4 = new Integer(128);16         System.out.println(integer3 == integer4);        // false17         System.out.println(integer3.equals(integer4));    // true18         19         System.out.println("----------------------------------------");20         21         Integer integer5 = 127;22         Integer integer6 = 127;23         System.out.println(integer5 == integer6);        // true24         System.out.println(integer5.equals(integer6));    // true25         26         System.out.println("----------------------------------------");27         28         Integer integer7 = 128;29         Integer integer8 = 128;30         System.out.println(integer7 == integer8);        // false31         System.out.println(integer7.equals(integer8));    // true32         33         // 查看反编译后的class文件34 //        Integer integer5 = Integer.valueOf(127);35 //        Integer integer6 = Integer.valueOf(127);36         37 //        Integer integer7 = Integer.valueOf(128);38 //        Integer integer8 = Integer.valueOf(128);39         40         // Integer.valueOf(127),传入127,使用byte缓冲区,所以使用==,比较的地址是同一个地址41         // Integer.valueOf(128),传入128,使用new创建新的空间,所以使用==,比较的地址是不同的地址42         43         // 推测可能是valueOf方法中的写法的差别44         // 查看Integer类的valueOf方法源码45 //        public static Integer valueOf(int i) {46 //            if (i >= IntegerCache.low && i <= IntegerCache.high)47 //                return IntegerCache.cache[i + (-IntegerCache.low)];48 //            return new Integer(i);49 //        }50         51         // 查看IntegerCache内部类的源码52 //        static final int low = -128;53 //        static final int high;54 //        static final Integer cache[];55 //        static {56 //            int h = 127;57 //            ...58 //        }59 //        high = h;60         61         // IntegerCache内部类的cache范围:-128~127,也称为byte缓冲区/byte缓存区62     }63 }
1 package cn.temptation; 2  3 public class Sample07 { 4     public static void main(String[] args) { 5         // 类 Character:在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。 6          7         /* 8          * Character类的构造函数: 9          * Character(char value) :构造一个新分配的 Character 对象,用以表示指定的 char 值。10          * 11          * Character类的常用成员方法:12          * 1、static boolean isUpperCase(char ch) :确定指定字符是否为大写字母。13          * 2、static boolean isLowerCase(char ch) :确定指定字符是否为小写字母。14          * 3、static boolean isDigit(char ch) :确定指定字符是否为数字。15          * 4、static char toUpperCase(char ch) :使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。16          * 5、static char toLowerCase(char ch) :使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。     17          */18         Character character = new Character('a');19         System.out.println(character);                // a20         System.out.println("------------------------------------");21         22         System.out.println(Character.isUpperCase('A'));        // true23         System.out.println(Character.isUpperCase('a'));        // false24         System.out.println(Character.isLowerCase('A'));        // false25         System.out.println(Character.isLowerCase('a'));        // true26         27         System.out.println(Character.isDigit('1'));        // true28         System.out.println(Character.isDigit('a'));        // false29         System.out.println("------------------------------------");30         31         System.out.println(Character.toUpperCase('a'));        // A32         System.out.println(Character.toLowerCase('A'));        // a33     }34 }
1 package cn.temptation; 2  3 import java.util.Scanner; 4  5 public class Sample08 { 6     public static void main(String[] args) { 7         // 需求:根据键盘录入的字符串(仅限大写字符、小写字符、数字字符),统计有多少个大写字符、多少个小写字符、多少个数字字符?(使用包装类) 8          9         String str = "";10         // 大写字符个数11         int upperCount = 0;12         // 小写字符个数13         int lowerCount = 0;14         // 数字字符个数15         int digitCount = 0;16         17         System.out.println("输入一个字符串(仅限大写字符、小写字符、数字字符):");18         Scanner input = new Scanner(System.in);19         if (input.hasNextLine()) {20             str = input.nextLine();21         } else {22             System.out.println("输入不正确!");23         }24         input.close();25         26         char[] arrChar = str.toCharArray();27         28         for (char item : arrChar) {29             if (Character.isUpperCase(item)) {30                 upperCount++;31             } else if(Character.isLowerCase(item)) {32                 lowerCount++;33             } else if (Character.isDigit(item)) {34                 digitCount++;35             }36         }37         38         System.out.println("字符串" + str + "中,大写字符有:" + upperCount + "个,小写字符有:" + lowerCount + "个,数字字符有:" + digitCount + "个");39     }40 }
1 package cn.temptation; 2  3 public class Sample09 { 4     public static void main(String[] args) { 5         int[] arr1 = null; 6         System.out.println(arr1);        // null 7         System.out.println("--------------------------------"); 8          9         float[] arr2 = null;10         System.out.println(arr2);        // null11         System.out.println("--------------------------------");12         13         boolean[] arr3 = null;14         System.out.println(arr3);        // null15         System.out.println("--------------------------------");16         17         char[] arr4 = null;18         // 执行异常:java.lang.NullPointerException19         System.out.println(arr4);20         21         // 查看反编译class文件,发现没有区别22 //        int arr1[] = null;23 //        System.out.println(arr1);24 //        System.out.println("--------------------------------");25 //        float arr2[] = null;26 //        System.out.println(arr2);27 //        System.out.println("--------------------------------");28 //        boolean arr3[] = null;29 //        System.out.println(arr3);30 //        System.out.println("--------------------------------");31 //        char arr4[] = null;32 //        System.out.println(arr4);33         34         // 所以,推测打印方法println()是否有不同的处理35         // 通过查看println()方法,可以看出,打印int[]、float[]、boolean[]数组,都是调用String的valueOf方法,打印出"null"36         // 而打印char[]数组,调用write()方法,因为null没有相应的属性,所以使用时产生空指针异常37         38 //        public void println(Object x) {39 //            String s = String.valueOf(x);40 //            synchronized (this) {41 //                print(s);42 //                newLine();43 //            }44 //        }45 //        46 //        调用String类的valueOf方法47 //        public static String valueOf(Object obj) {48 //            return (obj == null) ? "null" : obj.toString();49 //        }50 //        51 //        public void println(char x[]) {52 //            synchronized (this) {53 //                print(x);54 //                newLine();55 //            }56 //        }57         58 //        public void print(char s[]) {59 //            write(s);60 //        }61     }62 }

 

转载于:https://www.cnblogs.com/iflytek/p/6568350.html

你可能感兴趣的文章
iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
查看>>
iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
查看>>
gdb 调试 sysbench
查看>>
Oracle官方并发教程之中断
查看>>
使用模板实现编译期间多态
查看>>
[置顶].NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
查看>>
Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(三)
查看>>
iOS Touch ID 简易开发教程
查看>>
结构体类型指针做函数参数(C++)
查看>>
Akka笔记之消息传递
查看>>
带你实现开发者头条(一) 启动页实现
查看>>
Android Listview中Button按钮点击事件冲突解决办法
查看>>
【技术篇】SQL的四种连接-左外连接、右外连接、内连接、全连接
查看>>
可翻折的TextViewExpandableTextView
查看>>
5G超新时代,点燃了25G和100G光模块市场
查看>>
进程死锁的四个必要条件以及处理策略
查看>>
oracle 查看 、创建、删除 dblink
查看>>
spring boot 1.x 拦截器
查看>>
reactjs 分模块学习
查看>>
Android中Messenger的使用
查看>>