Java16常用类6(补充):包装类、File类、枚举

1.包装类

自动装箱和拆箱详情

1.1 包装类的特点

包装类的使用场景和优点:

1)某些方法的参数必须是对象,为了让基本数据类型的数据作为参数;
2)包装类还提供更多的功能例如:

  1. 获得类型的最大值:Integer.MAX_VALUE
  2. 最小值Integer.MIN_VALUE
  3. 将一个包装类型转为基本数据类型integer.doubleValue()
  4. 将字符串转化为数字Integer.parseInt("100")
  5. 将数字转化为字符串Integer.toString(10)。等等

3)其他重要的功能:可以实现字符串和基本数据类型的相互转换

Java是面向对象型语言,我们给八大基本类型分别对应一个包装类,包装类均位于java.lang包:

基本数据类型包装类:属于引用类型
bytejava.lang.Byte(父类Number)
shortjava.lang.Short(父类Number)
intjava.lang.Integer(父类Number)
longjava.lang.Long(父类Number)
floatjava.lang.Float(父类Number)
doublejava.lang.Double(父类Number)
charjava.lang.Character(父类Object
booleanjava.lang.Boolean(父类Object

1.2 父类Number方法

方法名作用
byte byteValue()以 byte 形式返回指定的数值
abstract double doubleValue()以 double 形式返回指定的数值
abstract float floatValue()以 float 形式返回指定的数值
abstract int intValue()以 int形式返回指定的数值
abstract long longValue()以 long形式返回指定的数值
short shortValue()以 short形式返回指定的数值

以上这些方法的 数字包装类的 子类都有;方法作用:拆箱

1.3 手动装箱、拆箱

package com.lCommonClasses.packages;
public class Integer1 {
    public static void main(String[] args) {
        /**这个基本数据类型,进行构造方法的包装达到了:
         * 基本数据类型向引用数据类型的转换。*/
         // 基本数据类型 -(转换为)->引用数据类型(装箱)
        Integer integ = new Integer(129);
        System.out.println(integ);

        // 将引用数据类型--(转换为)-> 基本数据类型
        double dv = integ.doubleValue();
        System.out.println(dv);
    }
}

1.4 构造方法

Jdk1.9适用,Jdk1.9之后就不推荐
1)Byte、Short、Long、Float、Double、Boolean的构造方法和Integer的构造方法一样。

//public 包装类名字(基本数据类型名字 value)
public Integer(int value) { this.value = value; }

public Integer(String s) throws NumberFormatException {
        this.value = parseInt(s, 10);
}

2)Character只有一个构造方法

 public Character(char value) {
        this.value = value;
    }

3)Float共有三个构造方法
还有一个构造方法,如下:

public Float(double value) {
        this.value = (float)value;
    }
package com.lCommonClasses.packages;
/**
 * 包装类的手动装箱、拆箱
 */
public class Integer1 {
    public static void main(String[] args) {
        /**1.这个基本数据类型,进行构造方法的包装达到了:
         * 基本数据类型向引用数据类型的转换。*/
         // 基本数据类型 -(转换为)->引用数据类型(装箱)
        Byte b = new Byte((byte) 6);
        Short s = new Short((short) 8);
        Integer i = new Integer(10);
        Long l = new Long("12");
        Float f = new Float(1.40);
        Double d = new Double("1.60");
        Character c = new Character('g');
        Boolean bool = true;
        System.out.println(b);

        // 将引用数据类型--(转换为)-> 基本数据类型
        double dv = i.doubleValue();
        System.out.println(dv);

        /** 2.包装类常量 */
        System.out.println(Short.MAX_VALUE);
        System.out.println(Double.MIN_VALUE);
        
    }
}

1.5 自动装箱和拆箱

自动装箱:基本数据类型自动转换成包装类;(自动装箱实际上是 new 对象了)
自动拆箱:包装类自动转换成基本数据类型

优点:

  1. 方便编程;
  2. 有了自动拆箱之后,Number类中的方法就用不着了

1.5.1 code

package com.lCommonClasses.packages;
public class Integer1 {
    public static void main(String[] args) {
        /** 3.自动装箱和拆箱(jdk1.5新特性)*/
        //基本数据类型--(自动转换)-->包装类型:自动装箱
        Integer x= 1024;//等同于:Integer z= new Integer(900);
        System.out.println(x +1);

        //包装类型--(自动转换)-->基本数据类型:自动拆箱
        int i1= x;//x:包装类型; y:基本数据类型
        System.out.println(i1);

		//自动装箱实际上是 new对象了
        Integer x1= 1024;
        System.out.println(x== x1);//false:比较的是引用地址
        System.out.println(x.equals(x1));//true
    }
}

特点:

  1. ==不会触发自动拆箱机制
  2. ==永远判断的都是两个对象的内存地址是否相同。
  3. 只有 + - * / 等运算的时候才会触发自动拆箱机制

1.5.2 (方法区)整数型常量池

1)java中为了提高程序的执行效率,将 [-128 ~ 127] 之间所有的包装对象提前创建好, 放到了一个方法区的“整数型常量池”当中了。
2)目的:只要用这个区间的数据不需要再new了,直接从整数型常量池当中取出来。
在这里插入图片描述

1.6 Integer包装类的方法

注意: Byte、Short、Long、Float、Double、Boolean 和 Integer的方法差不多相同。

方法名:作用
static Integer decode(String nm)将String转成Integer
static int compare(int x, int y)x=y: 返回 0;x> y: 返回 1;x< y: 返回 -1
static int signum(int i)符号函数;负数: 返回-1;正数: 返回1;0: 返回0
static String toBinaryString(int i)将i转成 二进制
static String toOctalString(int i )将i转成 八进制
static String toHexString(int i)将i转成 十六进制
static int parseInt(String s)字符串转int
static Integer valueOf(String s)字符串转Integer
String toString()Integer转String
boolean equals(Object obj)判断两个Integer是否相等
package com.lCommonClasses.packages;
/** Integer 的方法使用 */
public class Integer2 {
    public static void main(String[] args) {
        Integer integer= Integer.decode("+127");
        System.out.println(integer);//自动拆箱

        String st1= "110";
        Integer in1= -10;
        Integer in2= 10;

        //1.parseInt(String s);字符串转int
        System.out.println(Integer.parseInt(st1));//110
        /*2.valueOf(String s); 字符串 转成Integer;class java.lang.Integer
            decode(String nm); String转成Integer;class java.lang.Integer*/
        System.out.println(Integer.valueOf(st1).getClass());
        System.out.println(Integer.decode(st1).getClass());
        //3.toString(int i); Integer转String;class java.lang.String
        System.out.println(Integer.toString(in1).getClass());
        //4.a.equals(b); 判断两个Integer是否相等;
        System.out.println(in1.equals(in2));//false

        //5.compare(a,b); 比较 a、b的大小;in1< in2:-1
        System.out.println(Integer.compare(in1, in2));
        //6.signum(int i); 符号函数: <0:-1; >0:1; =0:0
        System.out.println(Integer.signum(in1));//-1
        System.out.println(Integer.signum(in2));//1
        /*7.toBinaryString(int i);将i转成 二进制;11111111111111111111111111110110
            toOctalString(int i);将i转成 八进制;37777777766
            toHexString(int i);将i转成 十六进制;fffffff6 */
        System.out.println(Integer.toBinaryString(in1));
        System.out.println(Integer.toOctalString(in1));
        System.out.println(Integer.toHexString(in1));
    }
}

1.7 Character方法

方法名作用
char charValue()将Character转成char
int compareTo(Character anotherCharacter)判断两个Character是否相等;相等返回0;前大后小返回1;后大前小返回-1
常用方法
boolean equals(Object obj)判断两个Character是否相等
String toString()将Character转成String
static boolean isDigit(char ch)判断ch是不是数字
static boolean isLetter(char ch)判断ch是不是字母
static boolean isLetterOrDigit(char ch)判断ch是不是字母或数字
static boolean isLowerCase(char ch)判断ch是不是小写字母
static boolean isUpperCase(char ch)判断ch是不是大写字母
static boolean isSpaceChar(char ch)判断ch是不是空格
static Character valueOf(char c)将char转成Character
package com.lCommonClasses.character;
/** Character方法 */
public class Character1 {
    public static void main(String[] args) {
        Character a = 'a';
        Character b = 'B';

        /*1.charValue(); 将Character转成char;a
            valueOf(char c); 将char转成Character; a */
        System.out.println(a.charValue());
        System.out.println(Character.valueOf(a));
        //2.equals(); 判断两个Character是否相等;false
        System.out.println(a.equals(b));
        /*3.toString(); 将Character转成String;
            class java.lang.String*/
        System.out.println(b.toString().getClass());

        Character c = '6';
        //4.isDigit(char ch); 判断ch是不是数字; true
        System.out.println(Character.isDigit(c));
        //5.isLetter(char ch); 判断ch是不是字母;false
        System.out.println(Character.isLetter(c));
        /*6.isLetterOrDigit(char ch);
            isLetterOrDigit(int codePoint);
            判断ch是不是字母或数字;true / true */
        System.out.println(Character.isLetterOrDigit(a));
        System.out.println(Character.isLetterOrDigit(c));
        //7.isLowerCase(char ch); 判断ch是不是小写字母; true
        System.out.println(Character.isLowerCase(a));
        //8.isUpperCase(char ch);判断ch是不是大写字母; true
        System.out.println(Character.isUpperCase(b));
        //9.isSpaceChar(' ');判断ch是不是空格; true
        System.out.println(Character.isSpaceChar(' '));
        /*10. a.compareTo(b);判断两个Character是否相等:
        a=b:返回0; a>b:返回1; a<b:返回-1 */
        System.out.println(a.compareTo(b));//-1
    }
}

2. File类

创建文件:create new file
查看文件:find、madir、canRead、length、getPath
修改文件:
删除文件:delete
//TODO

8.枚举

所有的枚举类型隐性地 继承自java.lang.Enum。枚举实质上还是类,而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final 修饰的。可以直接通过枚举类型名使用它们。

注意:
强烈建议当你需要定义一组常量时,使用枚举类型;
另外尽量不要 使用枚举的高级特性

package com.lCommonClasses.gEnum;
/**
 * 枚举就是用来表示有限个数的定值,
 *      不能输入别的参数使用,限制用户输入数据.
 */
public enum Gender {
        Man,Woman
}
package com.lCommonClasses.gEnum;

public class Enum1 {
    public static void main(String[] args) {
        AddPerson person = new AddPerson("张三", Gender.Man);
        System.out.println(person+
                person.getName()+person.getGender());
    }
}
class AddPerson{
    String name ;
    Gender gender;

    public AddPerson() {}

    public AddPerson(String name, Gender gender) {
        this.name = name;
        this.gender = gender;
    }

    public String getName() { return name; }
    public Gender getGender() { return gender; }

    @Override
    public String toString() {
        return "AddPerson{" +
                "name: '" + name + '\'' +
                ", gender: '" + gender + 
                '\'' + '}';
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,第1关是学习Java包装类之Integer。IntegerJava中的一个包装类,用于将基本数据型int封装成一个对象。它提供了很多方法,可以方便地进行数值转换、比较大小、字符串转换等操作。在Java中,我们经常需要将基本数据型转换成对象,或者将对象转换成基本数据型,这时就可以使用Integer来实现。 ### 回答2: Java中的包装类是指将基本数据型(如int、float等)封装成对象的,其中,integer是其中常用包装类之一。在Java中,integer提供了很多方便使用的方法,如valueOf()、parseInt()、toString()等。 integer是不能被继承的,同时它也是final的。所以,integer的方法都是静态的。integer主要有两个构造方法:一个是接收int型参数的构造方法,将一个基本数据型封装成integer对象;另一个是接收字符串参数的构造方法,将字符串转换成integer对象。值得注意的是,如果在使用字符串构造方法时字符串包含非数字的字符,就会抛出NumberFormatException异常。 integer的主要用途是在各种算术运算中使用。由于integer是一个包装类,所以它可以参与到Java的许多应用程序中,而不必强制使用基本数据型。例如,进行数学操作时,可以使用integer中的各种方法来计算结果,或者将integer对象作为方法参数进行传递。 在使用integer时,还需注意到autoboxing和unboxing这两个概念。autoboxing指的是将基本数据型自动封装成对应的包装类型,而unboxing则是将封装型对象自动转换成对应的基本数据型。这两者的作用都是为了在程序中更方便地使用基本数据型和对应的包装类型。 总的来说,integer作为Java常用包装类之一,其作用十分广泛。掌握integer的使用方法,可以更好地进行Java编程,同时也可为后续Java开发工作奠定坚实的基础。 ### 回答3: 在Java中,整数型的数据有byte、short、int和long四种,而IntegerJava中封装了int基本数据型的包装类,它提供了一系列用于操作int型的方法,同时也是Java常用之一。 Integer中提供的方法可以将一个数字字符串转化成int型,或者从整数中获取一定位数的值,比如getBytes()可以获取int型的最高位字节值。Integer还可以将整数值转换为二进制、八进制或十六进制字符串表示,也可以将字符串表示的数字转换为Integer型。 其中,最常用的操作是将字符串转化为整数型的操作,比如字符串"123"可以使用Integer.parseInt("123")转化为123这个整数型的值。同时,也可以把一个int型的数字转化为它的字符串形式,例如int a=123,可以用String.valueOf(a)或者a.toString()将其转化为字符串"123"。此外,Integer也提供了一些其他型之间的转换,如int和byte之间的转换。 而且,在Java的自动装箱和拆箱中,Integer也扮演着很重要的角色。在Java中,基本型和其对应的包装类之间可以自动互相转换。例如,int型的数值可以直接赋值给Integer型的变量,这就是自动装箱;而将Integer型的对象赋值给int型的变量,就是自动拆箱。 总之,IntegerJava中非常重要的一个,涉及了Java的基本数据型转换、字符串转换等很多方面,也是面试中常见的问题,掌握好Integer的用法对Java开发来说非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值