IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 黑马全套Java教程(七) -> 正文阅读

[Java知识库]黑马全套Java教程(七)


黑马全套Java教程(一)
黑马全套Java教程(二)
黑马全套Java教程(三)
黑马全套Java教程(四)
黑马全套Java教程(五)
黑马全套Java教程(六)

本博客从视频d198开始,视频链接

27 Arrays

27.1 冒泡排序

在这里插入图片描述
在这里插入图片描述

package myArrays.Demo1;

//冒泡排序
public class ArrayDemo {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13};
        System.out.println("排序前:" + arrayToString(arr));

        for (int j = 0; j < arr.length - 1; j++) {
            for (int i = 0; i < arr.length - 1 - j; i++) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }

        System.out.println("排序后:" + arrayToString(arr));
    }

    public static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

27.2 Arrays类的概述和常用方法

在这里插入图片描述
工具类的设计思想:

  • 构造方法用private修饰
  • 成员用public static修饰
package myArrays.Demo2;

import java.util.Arrays;

/*
    Arrays类包含用于操作数组的各种方法

    public static String (int[] a): 返回指定数组的内容和字符串表示形式
    public static voidsort(int[] a): 按照数字顺序排序指定的数组
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13};

        System.out.println("排序前:" + Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("排序后:" + Arrays.toString(arr));
    }
}

在这里插入图片描述



28 基本类型包装类

28.1 基本类型包装类概述

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
常用的操作之一:用于基本数据类型与字符串之间的转换
在这里插入图片描述

package myInteger.Demo1;
/*
    基本类型包装类
 */
public class InterDemo {
    public static void main(String[] args) {
        //需求:我要判断一个数据是否在int范围内?
        //public static final int Min_VALUE
        //public static final int MAX_VALUE
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.MAX_VALUE);
    }
}

在这里插入图片描述

28.2 Integer类的概述和使用

Integer:包装一个对象中的原始类型int的值
在这里插入图片描述

package myInteger.Demo2;
/*
    构造方法:
        public Integer(int value):根据int值创建Integer对象(过时)
        public Integer(String s):根据String值创建Integer对象(过时)

    静态方法获取对象:
        public static Integer valueOf(int i):返回表示指定的int值的Integer实例
        public static Integer valueOf(String s):返回一个保存指定值的Integer对象 String
 */
public class InterDemo {
    public static void main(String[] args) {
        //1
        Integer i1 = new Integer(100);
        System.out.println(i1);

        //2
        Integer i2 = new Integer("100");
        System.out.println(i2);

        //3
        Integer i3 = Integer.valueOf(100);
        System.out.println(i3);

        //4
        Integer i4 = Integer.valueOf("100");
        System.out.println(i4);
    }
}

28.3 int和String的相互转换

基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换
在这里插入图片描述

package myInteger.Demo3;

//int和String类型的相互转换
public class IntegerDemo {
    public static void main(String[] args) {
        //int---String
        int number = 100;

        //方式一
        String s1 = "" + number;
        System.out.println(s1);

        //方式二
        String s2 = String.valueOf(number);
        System.out.println(s2);
        System.out.println("--------------");

        //String---int
        String s = "100";
        //方式一
        //String---Integer----int
        Integer i = Integer.valueOf(s);
        int x = i.intValue();
        System.out.println(x);

        //方式二
        int y = Integer.parseInt(s);
        System.out.println(y);
    }
}

案例:字符串中数据排序
在这里插入图片描述

package myInteger.Demo4;

import java.util.Arrays;

public class Demo01 {
    public static void main(String[] args) {
        //1.定义字符串
        String s = "91 27 46 38 50";

        //2.字符串数字存储入数组
        String[] strArray = s.split(" ");
        String start = Arrays.toString(strArray);
        System.out.println(start);

        //3.int数组
        int[] arr = new int[strArray.length];
        for(int i=0;i< strArray.length ;i++){
            arr[i] = Integer.parseInt(strArray[i]);
        }
        Arrays.sort(arr);
        String result = Arrays.toString(arr);
        System.out.println(result);

    }
}

在这里插入图片描述

28.4 自动装箱和拆箱

装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为对应的基本数据类型
在这里插入图片描述

package myInteger.Demo5;

import myInteger.Demo1.InterDemo;

/*
    装箱:把基本数据类型转换为对应的包装类类型
    拆箱:把包装类类型转换为对应的基本数据类型
 */
public class IntegerDemo {
    public static void main(String[] args) {
        //装箱
        Integer i = Integer.valueOf(100);  //手动装箱
        Integer ii = 100;   //自动装箱

        //拆箱
        ii = ii.intValue() + 200;   //手动拆箱
        ii += 200;   //自动
        System.out.println(ii);

        Integer iii = null;
        if(iii!=null) {
            iii += 300;
        }
        System.out.println(iii);
    }
}




29 日期类

29.1 Date类概述和构造方法

Date代表了一个特定的时间,精确到毫秒
在这里插入图片描述

package myDate.Demo1;

import java.util.Date;

/*
构造方法:
    public Date():分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
    public Date(long date):分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
 */
public class DateDemo01 {
    public static void main(String[] args) {
        //1.
        Date d1 = new Date();
        System.out.println(d1);

        //2.
        long date = 1000*60*60;
        Date d2 = new Date(date);
        System.out.println(d2);
    }
}

在这里插入图片描述

常用方法:
在这里插入图片描述

package myDate.Demo1;

import java.util.Date;

/*
    public long getTime():获取的是日期对象从1970年1月1日 0时刻开始的毫秒值
    public void setTime(long time):设置时间,给的是毫秒值
 */
public class DateDemo02 {
    public static void main(String[] args) {
        //创建日期对象
        Date d = new Date();

        //1.
        System.out.println(d);  //当前时间
        System.out.println(d.getTime());   //获取某时间点到现在的毫秒值
        System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");
        System.out.println("------------------");

        //2.
        //long time = 1000*60*60;
        long time = System.currentTimeMillis();  //返回当前时间
        d.setTime(time);
        System.out.println(d);
    }
}

在这里插入图片描述

29.2 SimpleDateFormat类概述

在这里插入图片描述
构造方法:
在这里插入图片描述
格式化和解析日期:
在这里插入图片描述

package mySimpleDateFormat.Demo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
    构造方法:
        public SimpleDateFormat(): 构造一个SimpleDateFormat,使用默认模式和日期格式
        public SimpleDateFormat(String pattern): 构造一个SimpleDateFormat使用给定的模式和默认的日期格式

    格式化:从 Date 到 String
          public final String format(Date date): 将日期格式化成日期/时间字符串

    解析:从 String 到 Date
         public Date parse (String source):从给定字符串的开始解析文本以生成日期
 */

public class Demo1 {
    public static void main(String[] args) throws ParseException {
        //格式化: 从Date到String
        Date d = new Date();   //获取当前时间
//        SimpleDateFormat sdf = new SimpleDateFormat();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String s = sdf.format(d);   //格式化成字符串
        System.out.println(s);

        //从String 到 Date
        String ss = "2048-08-09 11:11:11";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date dd = sdf2.parse(ss);
        System.out.println(dd);
    }
}

在这里插入图片描述

案例:日期工具类
在这里插入图片描述
DateUtils.java

package mySimpleDateFormat.Demo2;

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

/*
    工具类
        构造方法私有
        成员方法静态
 */
public class DateUtils {
    private DateUtils(){}  //构造方法私有
    /*
        把日期转为指定格式的字符串
        返回值类型:String
        参数:Date date,  String format
     */
    public static String dateToString(Date date, String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String s = sdf.format(date);
        return s;
    }

    /*
        把字符串解析为指定格式的日期
        返回值:Date
        参数:String s, String format
     */
    public static Date stringToDate(String s, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d = sdf.parse(s);
        return d;
    }
}

DateDemo.java

package mySimpleDateFormat.Demo2;

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

//测试类
public class DateDemo {
    public static void main(String[] args) throws ParseException {
        //创建日期对象
        Date d = new Date();
        String s1 = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s1);

        String s2 = DateUtils.dateToString(d, "yyyy年MM月dd日");
        System.out.println(s2);
        System.out.println("-----------------");

        String s = "2048-08-09 12:12:12";
        Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");
        System.out.println(dd);
    }
}

29.3 Calendar概述 和 常用方法

在这里插入图片描述

package myCalendar.Demo1;

import java.util.Calendar;

/*
    Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供一些方法

    Calendar 提供了一个类方法 getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化
        Calendar rightNow = Calendar.getInstance();
 */
public class CalendarDemo {
    public static void main(String[] args) {
        //获取对象
        Calendar c = Calendar.getInstance();  //多态的形式
        System.out.println(c);

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int date = c.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + date + "日");
    }
}

在这里插入图片描述

在这里插入图片描述

package myCalendar.Demo2;

import java.util.Calendar;

/*
    Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供一些方法

    Calendar 提供了一个类方法 getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化
        Calendar rightNow = Calendar.getInstance();
 */
public class CalendarDemo {
    public static void main(String[] args) {
        //获取对象
        Calendar c = Calendar.getInstance();  //多态的形式
        System.out.println(c);
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int date = c.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + date + "日");
        System.out.println("--------------");

        c.set(2048,10,10);
        int year1 = c.get(Calendar.YEAR);
        int month1 = c.get(Calendar.MONTH) + 1;
        int date1 = c.get(Calendar.DATE);
        System.out.println(year1 + "年" + month1 + "月" + date1 + "日");
        System.out.println("---------------");

        c.add(Calendar.YEAR, 3);   //add加减时间值
        c.add(Calendar.DATE, -5);
        int year2 = c.get(Calendar.YEAR);
        int month2 = c.get(Calendar.MONTH) + 1;
        int date2 = c.get(Calendar.DATE);
        System.out.println(year2 + "年" + month2 + "月" + date2 + "日");
    }
}

在这里插入图片描述

案例:二月天
在这里插入图片描述

package myCalendar.Demo3;

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

/*
    需求:
        获取任意一年的二月有多少天
 */
public class CalendarTest {
    public static void main(String[] args) {
        //键盘录入年份
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = sc.nextInt();

        //设置日历年月日
        Calendar c = Calendar.getInstance();
        c.set(year, 2, 1);  //月份索引是从0开始的

        //往前推一天
        c.add(Calendar.DATE, -1);
        int date = c.get(Calendar.DATE);
        System.out.println(date);
    }
}




30 异常

30.1 异常概述

异常:就是程序出现了不正常的情况
在这里插入图片描述
索引越界异常显示:
在这里插入图片描述

30.2 JVM的默认处理方案

如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理

  • 把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
  • 程序停止执行
    在这里插入图片描述

30.3 异常处理

如果程序出现了问题,我们需要自己来处理,有两种方案:

  • try…catch…
  • throws

try…catch…

类似Python的try…except…
在这里插入图片描述

package myException.Demo2;

//异常
public class Demo1 {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }

    public static void method() {
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            //System.out.println("你访问的数组索引越界!");
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

throws

在这里插入图片描述
1.
在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述

30.4 Throwable的成员方法

在这里插入图片描述

package myException.Demo2;

//异常
public class Demo2 {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }

    public static void method() {
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {   //e为异常对象
            //System.out.println("你访问的数组索引越界!");
            //e.printStackTrace();   //这个输出信息最全
            System.out.println("e.getMessage():" + e.getMessage());  //Index 3 out of bounds for length 3   异常原因
            System.out.println("e.toString():" + e.toString());
        }
    }
}

在这里插入图片描述

30.5 编译时异常和运行时异常区别

在这里插入图片描述

30.6 自定义异常

在这里插入图片描述
ScoreException.java

package myException.Demo4;

public class ScoreException extends Exception{
    public ScoreException(){}
    public ScoreException(String message){
        super(message);
    }
}

Teacher.java

package myException.Demo4;

public class Teacher {
    public void cheakScore(int score) throws ScoreException {
        if (score < 0 || score > 100) {
            //throw new ScoreException();   //无参构造方法
            throw new ScoreException("你给的分数有误,分数应该在0-100之间");
        } else {
            System.out.println("分数正常!");
        }
    }
}

TeacherTest.java

package myException.Demo4;

import java.util.Scanner;

public class TeacherTest {
    public static void main(String[] args) throws ScoreException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入分数:");
        int score = sc.nextInt();

        Teacher t = new Teacher();
        t.cheakScore(score);    //编译时异常
    }
}

在这里插入图片描述
注意:
在这里插入图片描述
本博客到视频d219截止!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2021-08-21 15:13:47  更:2021-08-21 15:16:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 23:06:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码