Java第五章-八种基本包装类

目录

1、基本类型包装类,为什么使用包装类

2、简述自动装箱和拆箱

3、简述“==”和“equals()”的区别?

4、BigDecimal

5、DacimalFormat数字格式化

6、random随机数

7、String类 

 7.1、String类中常用的方法:

8、StringBuffer / Stringbuilder,拼接字符串

8.1、String类一旦创建不可变?

8.2、StringBuffer / StringBuilder创建之后为什么可变?

 9、String、ing、Integer三种类型互相转换

10、 java中的日期类:Date

10.1、Date --> String

10.2、String --> Date

 11、简单总结System类的相关属性和方法

 附录:简单学生管理系统


1、基本类型包装类,为什么使用包装类

因为8种基本类型够用,所以SUN共公司有提供了8种包装类型,八中包装类都属于引用数据类型,父类均是Object

基本数据类型

包装类型

byte

java.lang.Byte(父类Number)

short

java.lang.Short(父类Number)

int

java.lang.Integer(父类Number)

long

java.lang.Long(父类Number

double

java.lang.Double(父类Number)

floatjava.lang.Float(父类Number)

bollean

java.lang.Boolean(父类Object)

char

java.lang.Character(父类Object)

8种包装中有六个都是数字对应的包装类,他们的父类都是Number,Number中公共的方法:

Number是一个抽象类,无法实例化对象

Number类中有这些该方法:

         byte byteValue()                         返回指定号码作为值 byte ,这可能涉及舍入或截断 

         abstract double doubleValue()   返回指定数字的值为 double ,可能涉及四舍五入 

         abstract float floatValue()           返回指定数字的值为 float ,可能涉及四舍五入

         abstract int intValue()                 返回指定号码作为值 int ,这可能涉及舍入或截断 

         abstract long longValue()           返回指定数字的值为 long ,可能涉及四舍五入或截断 

         short shortValue()                      返回指定号码作为值 short ,这可能涉及舍入或截断

 这些方法所有的数字包装类的子类都有,这些方法是负责拆箱的

例如: 

// 基本数据类型(123)转换为--> 引用数据类型(装箱)
Integer i; // = new Integer(123);
i = 123;
// 引用数据类型 --(转换)--> 基本数据类型
float f = i.floatValue();
System.out.println(f);

2、简述自动装箱和拆箱

装箱:基本数据类型转为引用类型转换

拆箱:引用数据类型转为基本数据类型

3、简述“==”和“equals()”的区别?

 ==:   判断两个变量或实例是不是指向同一个内存空间

         是指对内存地址进行比较

         指引用是否相同

equals():   判断两个变量或实例所指向的内存空间的值是不是相同 
                  是对字符串的内容进行比较
                  指的是值是否相同

例题:给定一段字符串,里面包含若干个学生上机和笔试成绩

4、BigDecimal

java.math.BigDecimal;

* 属于大数据,精度极高,不属于基本数据类型,属于java对象(引用数据类型)

* 是SUN公司提供的一个类,专门用在财务当中

注意若:v1与v2求和 :不可v1 + v2 ;

             原因:  v1,v2是引用,不可使用 + 直接求和

例:

 BigDecimal v1 = new BigDecimal(100);
 BigDecimal v2 = new BigDecimal(100);
 BigDecimal v3 = v2.add(v2);

5、DacimalFormat数字格式化

数字格式化有哪些?

        #   代表意数字

        , 代表千分位

        .   代表小数点

        ###,##.##      表示:加入千分位,保留两个小数

例如: 

DecimalFormat df = new DecimalFormat("###,###.##");
String s = df.format(1234.237123); 
System.out.println(s); // 1,234.24

6、random随机数

例: 

Random random = new Random();  // 创建随机数对象 
// 随机产生一个int类型的取值范围的数据 
int num1 = random.nextInt(); 
int num2 = random.nextInt(101); // 表示只能取到100 ,不包括101

7、String类 

java.util.String

1、String表示字符串类型,属于引用数据类型,不属于基本数据类型。

2、在Java中随意使用双引号括起来的都是String对象

3、Java中规定,双引号括起来的字符串,是不可变的。也就是说“abc”自出生到死亡不可变

4、在JDK当中双引号括起来的都是字符串,例如“abc”“def”都是直接存储在”方法区“的”字符串常量池“当中。

因为字符串在实际开发中使用太频繁。为了执行此效率,所以把字符串放到了方法区的字符串常量池当中。

 7.1、String类中常用的方法:

  1. public char charAt(int    index);     // 输出指定下标字符
  2. int compareTo(String    anotherString);     // 比较字符串大小
  3. boolean contains(CharSequence    s);   // 判断前面的字符串中是否包含后面的字符串
  4. boolean endsWith(String    suffix);    // 判断当前字符串是否以某个特定字符串结尾
  5. boolean equals(Object  anObject);     // 比较两个字符串必须使用equals方法,
  6. boolean equalsIgnoreCase(String  anotherString);    // 判断两个字符串是否相等,                                                                                                    //并且同时忽略大小写
  7. byte[] getBytes(Charset     charset);    // 将字符串对象转为字节数组
  8. int indexOf(String     str);    // 判断某个子字符串在当前字符串中第一次出现的索引(下标)
  9. boolean isEmpty();      // 判断某个字符串是否为空字符串,底层代码调用的是length()方法
  10. int lehgth() ;    // 判断字符串长度
  11. int lastIndexOf(int     ch) ;    // 判断某个字符串在当前字符串中最后一次出现的位置
  12. String replace(CharSequence     target, CharSequence     replacement) ;     // 替换
  13. String[] split(String     regex);         // 拆分字符串
  14. boolean startsWith(String     prefix) ;        // 判断某个字符串是否以某个字符串开始
  15. String substring(int beginIndex) ;      // 参数是起始下标 ,截取字符串
  16. String substring(int beginIndex, int endIndex) ;           // beginIndex 起始位置(包括)                                                                                                  // endIndex 结束位置(不包括)
  17. char[] toCharArray( );            // 将字符串转换成char数组
  18. String toLowerCase();       // 转换为小写
  19. String toUpperCase() ;         // 转换为大写
  20. String trim() ;                          // 去除字符串前后空白
  21. String中有一个方法是静态的,不需要new对象 ,这个方法叫做 "valueOf                              作用:将“非字符串”转换为“字符串”

8、StringBuffer / Stringbuilder,拼接字符串

如果需要使用大量字符串拼接操作,建议使用JDK中自带的:

 java.lang.StringBuffer;

 java.lang.StringBuilder;

例: 

 // 创建一个初始化容量为16个byte[] 数组(字符串缓冲区对象) 
StringBuffer stringBuffer = new StringBuffer(); // 拼接字符串,拼接字符串调用.append()方法
stringBuffer.append("a"); 
stringBuffer.append("b");
System.out.println(stringBuffer.toString()); // ab

8.1、String类一旦创建不可变?

原因:String类中有一个byte[]数组,这个byte[]数组采用final修饰,数组一旦创建长度不可变。并且被final修饰的引用一单指向某个对象之后, 不可再指向其他对象,所以String创建的对象不可变。

8.2、StringBuffer / StringBuilder创建之后为什么可变?

原因:StringBuffer / StringBuilder内部实际上是一个byte[]数组, 这个byte[]数组没有被final修饰,StringBuffer / StringBuilder的初始化 是16,当存满之后会进行扩容,底层调用了数组拷贝的方法 System.arraycopy()....是这样扩容的。所以StringBuffer / StringBuilder 适用于字符串的频繁拼接操作。

StringBuffer 中的方法都被synchronized关键字修饰,表示StringBuffer在多线程环境下运行是安全的

StringBuilder 中的方法都没有被synchronized关键字修饰,表示StringBuilder在多线程下是不安全的

 9、String、ing、Integer三种类型互相转换

引用类型互相转换成引用类型的时候都是采用  “引用类型名.valueOf()“”

10、 java中的日期类:Date

java.util.Date;

10.1、Date --> String

例: 

Date nowTime = new Date(); // 获取系统当前时间

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); // 格式化日期:年-月-日 时:分:秒 毫秒

String nowTimeStr = sdf.format(nowTime); // 转换为字符串形式

System.out.println(nowTimeStr);// 2023-05-18 21:08:53 480

10.2、String --> Date

例: 

String time = "2008-08-08 08:08:08 000";

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");

Date dateTime = sdf2.parse(time);

System.out.println(dateTime); // Tue Aug 08 08:08:08 CST 2000

String aa = sdf2.format(dateTime);

System.out.println(aa); // 2008-08-08 08:08:08 000

其中:format()方法:按指定的目标格式八Date对象转换为String类型

            parse()方法:按指定源格式把String类型转换为Date对象 

 11、简单总结System类的相关属性和方法

  1. System.out [out]   是System类的静态方法
  2. System.out.println()    println()不是System类的,是printStream类的方法
  3. Systwm.gc()      建议启动垃圾回收器
  4. System.currentTimeNills()      获取自1970年1月1日到系统当前时间的毫秒数
  5. System.exit(0)      退出JVM

例: 

// 获取自1970年1月1日 00:00:000到当前系统的总毫秒数

long nowTimeMillis = System.currentTimeMillis();

System.out.println(nowTimeMillis); // 1668091825272

 附录:简单学生管理系统

如: 

String str =   "张三:上机成绩=90,笔试成绩=78;

                      李四:上机成绩=68,笔试成绩=98;

                      王五:上机成绩=48,笔试成绩=58;

                      赵六:上机成绩=55,笔试成绩=11;

                       jim:上机成绩=44,笔试成绩=55;

                       tom:上机成绩=22,笔试成绩=55;";

要求: 使用面向对象思想实现

将每个学生信息,存入一个学生对象中.

将多个学生对象存入一个学生数组中.

按照总分进行升序显示输出

public class Demo05 {
    public static void main(String[] args) {
        String str = "张三:上机成绩=90,笔试成绩=78;"
                   + "李四:上机成绩=68,笔试成绩=98;"
                   + "王五:上机成绩=48,笔试成绩=58;"
                   + "赵六:上机成绩=55,笔试成绩=11;"
                   + "jim:上机成绩=44,笔试成绩=55;"
                   + "tom:上机成绩=22,笔试成绩=55;";
        String[] str1 = str.split(";");
        Student[] students = new Student[str1.length];
        for (int i = 0; i < str1.length; i++) {
            String name = str1[i].substring(0,str1[i].indexOf(":"));
            int upGrade = Integer.parseInt(str1[i].substring(str1[i].indexOf("=")+ 1,str1[i].indexOf(",")));
            int doGrade = Integer.parseInt(str1[i].substring(str1[i].lastIndexOf("=") + 1));
            int add = upGrade + doGrade;
            Student student = new Student(name,upGrade,doGrade,add);
            students[i] = student;
        }
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));
    }
}
class Student implements Comparable<Student>{
    String name;
    int upGrade;
    int doGrade;
    int add;

    public Student(String name, int upGrade, int doGrade, int add) {
        this.name = name;
        this.upGrade = upGrade;
        this.doGrade = doGrade;
        this.add = add;
    }

    @Override
    public String toString() {
        return name + ":上机成绩=" + upGrade + ", 笔试成绩=" + doGrade + ", 总分:" + add + "\n";
    }

    @Override
    public int compareTo(Student o) {
        return this.add - o.add;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值