栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java面向对象7-常用类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java面向对象7-常用类

包装类

1、什么是包装类
以前定义变量,经常使用基本数据类型
对于基本数据类型来说,它就是一个数,加点属性,加点方法,加点构造器,将基本数据类型对应进行了一个封装,产生了一个新的类 —》包装类
int,byte —》基本数据类型,包装类 —》引用数据类型

2、对应关系

3、已经有基本数据类型了,为什么要封装为包装类?
(1)java语言 面向对象的语言,最擅长的操作各种各样的类
(2)以前学习装数据的 —》数组,int[] String[] double[] Student[]
以后学习的装数据 —》集合,有一个特点,只能装引用数据类型的数据

4、是不是有了包装类以后就不用基本数据类型了?
不是。基本数据类型就一个数,操作简单

Integer

1、所属包为Java.lang,可以直接使用无需到包
2、类的继承关系Integer-》Number-》Object
3、实现的接口Serializable、Comparable
4、Integer被final修饰,不能有子类,不能被继承
5、包装int产生了Integer
6、类的历史:JDK 1.0
7、属性:MAX_VALUE、MIN_VALUE
8、自动装箱int–>Integer、自动拆箱Integer–>int(JDK1.5之后新出的特性)

package msb.javase.oop.javase_220308_packaged_class_test;

public class Test {
    public static void main(String[] args) {

        Integer i1 = new Integer(12);
        System.out.println(i1);
        Integer i2 = new Integer("12");
        System.out.println(i2);
        //自动装箱
        Integer i3 = 12;
        System.out.println(i3);
        //自动拆箱
        int i4 = new Integer(12);
        System.out.println(i4);
    }
}

9、方法:
(1)构造器,发现没有空参构造器,参数int或String
(2)常用方法

compareTo 在数字上比较两个Integer对象

 Integer i1 = new Integer(12);
 Integer i2 = new Integer("12");
 System.out.println(i1.compareTo(i2));//0

equals 比较两个对象,Integer对Object中的equals方法进行了重写,所比较的是底层封装的value的值

 System.out.println(i1.equals(i2));//true
 Integer i5 = 12;
 Integer i6 = 12;
 System.out.println(i5 == i6);//true
 Integer i7 = 130;
 Integer i8 = 130;
 System.out.println(i7 == i8);//false

ValueOf方法的底层:如果自动装箱的值在-128~127之间,那么比较的就是具体的数值,否则比较的就是对象的地址

intValue():Integer --> int

 Integer i9 = 130;
 int i10 = i9.intValue();
 System.out.println(i10);

parseInt:String --> int

 String s1 = "130";
 int i11 = Integer.parseInt(s1);
 System.out.println(i11);

toString:Integer --> String

 Integer i12 = 130;
 String s2 = i12.toString();
 System.out.println(s2);
日期相关类 Date java.util.Date

(1)疑问:以后获取时间差用getTime()还是currentTimeMillis()
答案:currentTimeMillis()–》因为这个方法是静态的,可以类名.方法名直接调用
(2)public static native long currentTimeMillis() 本地方法
为什么没有方法体?因为这个方法的具体实现不是通过java写的
(3)这个方法的作用:
一般会去衡量一些算法所用的时间

package msb.javase.oop.javase_220309_date;

import java.awt.*;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d);
        System.out.println(d.toString());
        System.out.println(d.toGMTString());
        //System.out.println(d.getDate());
        System.out.println(d.toLocaleString());

        //返回自1970年1月1日00:00:00 GMT 以来此Date对象表示的毫秒数
        System.out.println(d.getTime());
        System.out.println(System.currentTimeMillis());
        

    }
}

java.sql.Date

(1)sql.Date只有年月日,没有时分秒,util.Date都有
(2)sql.Date是util.Date的子类
(3)sql.Date可以和util.Date可以相互转换

package msb.javase.oop.javase_220309_date;

import java.sql.Date;

public class Test2 {
    public static void main(String[] args) {
        Date d1 = new Date(1646746343485L);
        //System.out.println(d1);

        //sql.Date可以和util.Date可以相互转换

        //util--->sql
        //方式一:向下转型
        java.util.Date d2 = new java.util.Date();
        Date d3 = (Date)d1;
        //方式二:利用构造器
        Date d4 = new Date(d2.getTime());

        //util--->sql
        java.util.Date d5 = d1;

        //String--->sql.Date
        Date d6 = Date.valueOf("2022-3-9");
        System.out.println(d6);
    }
}

SimpleDateFormat

提出问题:String —> java.util.Date
解法:
(1)String —> java.sql.Date

(2)java.sql.Date —> java.util.Date

package msb.javase.oop.javase_220309_date;

public class Test3 {
    public static void main(String[] args) {
        //(1)String ---> java.sql.Date
        java.sql.Date d1 = java.sql.Date.valueOf("2022-3-9");
        //(2)java.sql.Date ---> java.util.Date
        java.util.Date d2 = d1;
        System.out.println(d2);
    }
}

局限性:此解法只适用于2022-3-9格式的转换
引入:DateFormat

package msb.javase.oop.javase_220310_date_test2;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) throws ParseException {
        //public class SimpleDateFormat(子类) extends DateFormat(父类是抽象类)
        //格式化的标准(定义好了)
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //String --> Date  === parse
        Date ddf = df.parse("2022-3-9 22:52:10");
        System.out.println(ddf);
        //Date --> String  === format
        String sdf = df.format(new Date());
        System.out.println(sdf);
    }
}

Calendar

常用方法:

package msb.javase.oop.javase_220310_calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Test {
    public static void main(String[] args) {
        Calendar cal = new GregorianCalendar();
        Calendar cal2 = Calendar.getInstance();
        //get方法
        System.out.println(cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH));
        System.out.println(cal.get(Calendar.DATE));
        System.out.println(cal.get(Calendar.DAY_OF_WEEK));
        System.out.println(cal.getActualMaximum(Calendar.DATE));//当月日期的最大天数
        System.out.println(cal.getActualMinimum(Calendar.DATE));//当月日期的最小天数
        //set方法
        cal.set(Calendar.YEAR,1991);
        cal.set(Calendar.MONTH,2);
        cal.set(Calendar.DATE,1);
        //String --> Calendar
        // (1) String --> Date
        java.sql.Date date = java.sql.Date.valueOf("2011-3-5");
        // (2) Date --> Calendar
        cal.setTime(date);
        System.out.println(cal.get(Calendar.YEAR));
    }
}

提出问题:请输入你想要查看的日期,展示为日历格式
解法:

package msb.javase.oop.javase_220310_calendar;

import java.util.Calendar;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        //录入日期的String
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你想要查看的日期:(例如2020-3-8)");
        String strDate = sc.next();
        //String --> Calendar
        Calendar cal = Calendar.getInstance();
        // (1) String --> Date
        java.sql.Date date = java.sql.Date.valueOf(strDate);
        // (2) Date --> Calendar
        cal.setTime(date);
        //开始后续的操作
        // (1) 打印头部
        System.out.println("日t一t二t三t四t五t六");
        // (2) 获取本月最大天数和当前日
        int maxDay = cal.getActualMaximum(Calendar.DATE);
        int nowDay = cal.get(Calendar.DATE);
        //将日期调为本月的1号
        cal.set(Calendar.DATE,1);
        //1号是本周的第几天
        int num = cal.get(Calendar.DAY_OF_WEEK);
        //先把空格打印出来
        int count = 0;
        for(int j=0; j 
JDK1.8新增日期时间API的原因 

JDK1.0使用java.util.Date(第一批日期时间API),JDK1.1引入Calendar类(第二批)的缺陷:
(1)不可变性:日期和时间不可变
(2)偏移性:Date年份从1900开始,月份从0开始
(3)格式化:格式化只对Date有用
JDK1.8新增日期时间API(第三批)

JDK1.8新增LocalDate/LocalTime/LocalDateTime
package msb.javase.oop.javase_220310_calendar;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class Test3 {
    public static void main(String[] args) {
        //1.完成实例化
        //方法1:now() 获取当前日期、时间、日期+时间
        LocalTime localTime = LocalTime.now();
        System.out.println(localTime);
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);
        //方法2:of() 设置指定日期、时间、日期+时间
        LocalDateTime ofLocalDateTime = LocalDateTime.of(2020,2,28,10,18,25);
        System.out.println(ofLocalDateTime);
        //2.常用方法
        //(1)常用的get方法
        System.out.println(localDateTime.getYear());
        System.out.println(localDateTime.getMonth());
        System.out.println(localDateTime.getDayOfMonth());
        System.out.println(localDateTime.getDayOfWeek());
        System.out.println(localDateTime.getHour());
        System.out.println(localDateTime.getMinute());
        System.out.println(localDateTime.getSecond());
        //(2)常用的set方法(这里叫with)
        LocalDateTime localDateTime2 = localDateTime.withMonth(10);
        System.out.println(localDateTime); //原先的对象没有变
        System.out.println(localDateTime2); //新返回的对象改变了月份值
        //(3)提供了加减的操作
        LocalDateTime localDateTime3 = localDateTime.plusDays(3);
        System.out.println(localDateTime);
        System.out.println(localDateTime3);
    }
}

DateTimeFormatter
package msb.javase.oop.javase_220310_calendar;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;

public class Test4 {
    public static void main(String[] args) {
        //格式化类:DateTimeFormatter
        //方式一:预定义的标准格式
//        DateTimeFormatter.ISO_LOCAL_DATE_TIME;
//        DateTimeFormatter.ISO_LOCAL_DATE;
//        DateTimeFormatter.ISO_LOCAL_TIME;
        DateTimeFormatter df = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        //df1就可以帮我们完成LocalDateTime和String的相互转换
        //LocalDateTime-->String
        LocalDateTime now = LocalDateTime.now();
        String str = df.format(now);
        //String-->LocalDateTime
        TemporalAccessor parse = df.parse(str);

        //方式二:本地化相关的格式
//        DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);  2022年3月10日 上午07时33分41秒
//        DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);  2022-3-10 7:34:59
//        DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);  22-3-10 上午7:35
        DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
        //LocalDateTime-->String
        LocalDateTime now2 = LocalDateTime.now();
        String str2 = df2.format(now2);
        System.out.println(str2);
        //String-->LocalDateTime
        TemporalAccessor parse2 = df2.parse(str2);
        System.out.println(parse2);

        //方式三:自定义格式(重点,以后常用)
        DateTimeFormatter df3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        //LocalDateTime-->String
        LocalDateTime now3 = LocalDateTime.now();
        String str3 = df3.format(now3);
        System.out.println(df3);
        //String-->LocalDateTime
        TemporalAccessor parse3 = df3.parse(str3);
        System.out.println(parse3);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759220.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号