常用类学习笔记

  包装类:

我们在实际应用中经常需要将基本数据转化成对象,如:将基本数据类型存储到Object[ ]数组集合中的操作等。Java在为每个基本数据类型设计了一个对应的类进行代表,八个和基本数据类型对应的类统称为包装类 (Wrapper Class),包装类均位于java.lang包

除了Character和Boolean以外,其他的都是“数字型”,“数字型”都是java.lang.Number的子类

Number类是抽象类,因此它的抽象方法,所有子类都需要提供实现。Number类提供了抽象方法:intValue()、longValue()、floatValue()、doubleValue(),意味着所有的“数字型”包装类都可以互相转型

以Integer类为例,其他类类似。

1.基本数据类型转成包装类对象:Integer 对象名称 = new Integer(整形数字);

                                                    Integer 对象名称 = Integer.valueOf(整形数字);第一种方法的实质就是调用valueOf方法)

2.包装类对象转成基本数据类型:int 变量名称 = 对象名称.intValue();

                                                  或 int 变量名称 = 变量名称.intValue();

3.把字符串转成包装类对象:Integer 对象名称 = new Integer("整形数字");

                                           或 Integer 对象名称 = Integer.parseInt("整形数字");

4.把包装类对象转成字符串:String 字符串名称 = 对象名称.toString();

5.常见的常量:Integer.MAX_VALUE = 2147483647

                        Integer.MIN_VALUE = -2147483648

自动装箱:基本类型的数据处于需要对象的环境中时,会自动转为“对象”。

                  格式:Integer 对象名 = 整形数字;

自动拆箱:每当需要一个值时,对象会自动转成基本数据类型。

                  格式:int 变量名称 = 对象名;

包装类的缓存:缓存[ -128,127]之间的数字,实际就是系统初始的时候,创建了[ -128,127]之间的一个缓存数组

                         当我们调用valueOf()时(即整形char类型数据创建包装类对象时),首先检查是否在[-128,127]之间。

                         若是则直接从缓存数组中拿出已经建好的对象(数字相同即为同一个对象,==验证为true)。若否,则创建新对象

  String类:

String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”,指的是对象内部的成员变量的值无法再改变。

源码中,字符串内容全部存储到value[]数组中,而变量value是final类型的,也就是常量(即只能被赋值一次)。 这就是“不可变对象”的典型定义方式。

在遇到字符串常量之间的拼接时,编译器会做出优化,即在编译期间就会完成字符串的拼接。

String str1 = "hello"+"java";

String str2 = "hello java";

String str3 = "hello";

String str4 ="java";

String str5 = str3+str4;

我们认为,str1==str2为true,而str5==str2为false

因此进行String对象之间的比较时,建议用equals方法。

  AbstractStringBuilder类:

可变字符序列

子类之 StringBuilder:线程不安全,效率高

子类之 StringBuffer:线程安全,效率低

常用方法:调用时格式 对象名.方法名()即可

1. 重载的public StringBuilder append(…)方法

    可以为该StringBuilder 对象添加字符序列,仍然返回自身对象。

2. 方法 public StringBuilder delete(int start,int end)

    可以删除从start开始到end-1为止的一段字符序列,仍然返回自身对象。

3. 方法 public StringBuilder deleteCharAt(int index)

    移除此序列指定位置上的 char,仍然返回自身对象。

4. 重载的public StringBuilder insert(…)方法

    可以为该StringBuilder 对象在指定位置插入字符序列,仍然返回自身对象。

5. 方法 public StringBuilder reverse()

    用于将字符序列逆序,仍然返回自身对象。

6. 方法 public String toString() 返回此序列中数据的字符串表示形式。

在频繁字符串修改时,务必使用StringBuilder append()方法,而不是String类中的方法。

  Date时间类:

与时间有关的类主要有三个:Date类,DateFormat类,Calendar 类

1.Date类

Date() 分配一个Date对象,并初始化此对象为系统当前的日期和时间,可以精确到毫秒)。

Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数

相关方法(日期相关的大多被取缔):

1.getTime(): 获取当前毫秒数

2.getDate():获取当前日期

3.对象1.after(对象2) / 对象1.before(对象2):布尔类,判断时间先后

2.DateFormat类

时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现。

常用格式:

1.时间对象转换成字符串

DateFormat 格式对象名称 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");(定义时间的格式)
String 字符串对象名称 = 字符串对象名称.format(new Date());(用format方法将时间对象转化称字符串,Date()中可自定义时间)

2.字符串转成时间对象
DateFormat 格式对象名称 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");(定义时间的格式)
Date 时间对象名称 = 格式对象名称.parse("1996年3月22日 12时15分");(将括号里的字符串用parse方法转为时间对象,字符串必须严格按照定义的格式写,此步骤须处理异常)

3.Calendar 类:

Calendar 类也是一个抽象类,提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。创建好的GregorianCalendar类的对象中包含各种时间元素的一系列信息,可以用get、set方法去提取或设置其中的某些时间元素的信息。

定义calendar类的对象 格式:Calendar 对象名称 = new GregorianCalendar(年份,月份,日) 或 Calendar al = new GregorianCalendar(年份,月份,日,时,分,秒)

如何获取calendar类的对象中的信息:使用get方法。以获取星期几为例,格式为:int year = 对象名称.get(Calendar.DAY_OF_WEEK)

注意:月份中,0表示一月,11表示12月。以此类推。星期中,1表示周日,7表示周六,以此类推。

设置日期的相关元素:初始化对象后,使用set方法设置相应的元素。设置后,可以用get方法查看。若直接打印对象,则包含所有时间信息。

                                    Calendar 对象名称 = new GregorianCalendar();
                                    对象名称.set(Calendar.YEAR,2019);

日期的计算:初始化对象后,使用add方法来加减时间元素。以往前推100年为例:

                     Calendar 对象名称 = new GregorianCalendar();
                     对象名称.add(Calendar.YEAR, -100);

复习一下条件运算符:x?y:z  判断x,若为真,执行y,否则执行z。

写了一个根据calendar对象打印日期的方法如下:(注意月份中+1的位置在括号外)

  可视化日历程序:

  Math类:

java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。

ceil(double a) 大于a的最小整数,

floor(double a) 小于a的最大整数,

long round(double a) double型的数据a转换为long型(四舍五入)

pow(double a, double b) a的b次幂

random() 产生[0,1)之间的随机数

  Random类:

Math类中虽然为我们提供了产生随机数的方法Math.random(),但是通常我们需要的随机数范围并不是[0, 1)之间的double类型的数据。

Random类是专门用来生成随机数的,并且Math.random()底层调用的就是Random的nextDouble()方法。

创建random类对象:Random 对象名称 = new Random(); 

1.对象名称.nextDouble(); 随机生成[0,1)之间的double类型的数据
2.对象名称.nextInt(); 随机生成int类型允许范围之内的整型数据
3.对象名称.nextFloat(); 随机生成[0,1)之间的float类型的数据
4.对象名称.nextBoolean(); 随机生成false或者true
5.对象名称.nextInt(10); 随机生成[0,10)之间的int类型的数据
6.20 + 对象名称.nextInt(10); 随机生成[20,30)之间的int类型的数据

  Fille类:

创建一个file类对象:File 对象名称 =new File("d:/a.text");File 对象名称 =new File("d:\\a.text");

注意:创建file类对象不意味着创建了文件

根据file类对象的名称与地址创建文件:对象名称.createNewFile();

删除文件:对象名称.delete();

获取系统属性:System.getProperty()

                         System.getProperty("user.dir")表示获取当前程序所在目录

创建好file类对象后, 可以通过它来访问文件的属性:

创建目录的两种方法:

1.对象名称.mkdir(); 创建一个目录,若中间某个目录缺失则创建失败

2.对象名称.mkdirs(); 创建多个目录,若中间某个目录缺失则创建这个缺失目录

重点掌握:

获取对象的文件名:对象名称.getName();

判断是否是目录:对象名称.isDirectory();

获取文件夹目录中的文件列表并存于数组中:File[ ] 数组对象名称 = 文件夹对象名称.listFiles();

  枚举:

定义一组常量时可以用枚举。可在switch语句中使用枚举。以季节为例,

格式:enum Season {
SPRING,SUMMER,AUTUMN,WINTER
}

 

posted @ 2020-03-23 11:04  菅兮徽音  阅读(180)  评论(0编辑  收藏  举报