Java基础-常用类

文章目录

    • 1.Math类
    • 2.System类
        • 1.exit
          • 代码
        • 结果
        • 2.arraycopy
          • 参数解释
          • 代码
          • 结果
        • 3.currentTimeMillens
          • 代码
          • 结果
    • 3.大数处理方案
        • 基本介绍
        • BigInteger类
          • 介绍
          • 代码
          • 结果
        • BigDecimal类
          • 介绍
          • 代码
          • 结果
    • 4.日期类
        • 对于IDEA类图中的属性![image-20240101190844530](https://img-blog.csdnimg.cn/img_convert/6d285b7dfa10bddec5ba6b8b3c59776f.png)
        • 第一代日期类
          • 代码
          • 结果
        • 第二代日期类(Calendar)
          • 基本介绍
          • 代码
          • 结果
        • 第三代日期类
          • 基本使用
          • 进阶使用
    • 5.章节练习
        • 练习一
          • 题目
          • 代码
          • 结果
        • 练习二
          • 题目
          • 代码
          • 结果
        • 练习三
          • 题目
          • 代码
          • 结果
        • 练习四
          • 题目
          • 代码
          • 结果
        • 练习五
          • 题目
          • 代码
          • 结果
  • 常用类
    • 1.Math类
    • 2.System类
        • 1.exit
          • 代码
        • 结果
        • 2.arraycopy
          • 参数解释
          • 代码
          • 结果
        • 3.currentTimeMillens
          • 代码
          • 结果
    • 3.大数处理方案
        • 基本介绍
        • BigInteger类
          • 介绍
          • 代码
          • 结果
        • BigDecimal类
          • 介绍
          • 代码
          • 结果
    • 4.日期类
        • 对于IDEA类图中的属性![image-20240101190844530](https://img-blog.csdnimg.cn/img_convert/9e65cace4e31b884a7fa4185678dbe73.png)
        • 第一代日期类
          • 代码
          • 结果
        • 第二代日期类(Calendar)
          • 基本介绍
          • 代码
          • 结果
        • 第三代日期类
          • 基本使用
          • 进阶使用
    • 5.章节练习
        • 练习一
          • 题目
          • 代码
          • 结果
        • 练习二
          • 题目
          • 代码
          • 结果
        • 练习三
          • 题目
          • 代码
          • 结果
        • 练习四
          • 题目
          • 代码
          • 结果
        • 练习五
          • 题目
          • 代码
          • 结果

1.Math类

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Math_ {
    public static void main(String[] args) {
        //1.abs 绝对值
        int abs = Math.abs(-9);
        System.out.println(abs);

        //2.pow 求幂
        double pow = Math.pow(2, 10);
        System.out.println(pow);

        //3.ceil 向上取整,返回>=该参数的最小整数
        double ceil = Math.ceil(3.1);
        System.out.println(ceil);

        //4.floor 向下取整,返回<=该参数的最小整数
        double floor = Math.floor(3.8);
        System.out.println(floor);

        //5.round 四舍五入
        long round = Math.round(-5000.67);
        System.out.println(round);

        //6.sqrt 求开方
        double sqrt = Math.sqrt(9.0);
        System.out.println(sqrt);

        //求2-7的随机数
        for (int i = 0; i < 10; i++) {
            System.out.println(2 + (int) (Math.random() * 6)); //2 + 0到5就是2到7
        }
    }
}

2.System类

image-20240101163902484

1.exit
代码
package system_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class System_ {
    public static void main(String[] args) {
        // exit 退出当前程序
        System.out.println("1");
        System.exit(0); //正常情况退出
        System.out.println("2");
    }
}

结果

image-20240101163945623

2.arraycopy
参数解释

image-20240101164126728

代码
package system_;

import java.util.Arrays;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class System_ {
    public static void main(String[] args) {
        int[] src = new int[]{1,2,3};
        int[] dest = new int[3];
        System.arraycopy(src, 0, dest, 0, src.length); //从src数组的0位置复制到dest的0位置,复制src的所有元素
        System.out.println(Arrays.toString(dest));
    }
}

结果

image-20240101164507525

3.currentTimeMillens
代码
package system_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class CurrentTimeMillens {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());
    }
}

结果

image-20240101190102867

3.大数处理方案

基本介绍

image-20240101183101947

BigInteger类
介绍
  1. 在编程中,如果需要处理很大的整数,long不够用, 则交给BigInteger来处理
  2. 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
代码
package bignum;

import java.math.BigInteger;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class BigInteger_ {
    public static void main(String[] args) {
        BigInteger bigInteger = new BigInteger("33333333333333333333333333333333333333333333333333333333333333");
        System.out.println(bigInteger);
        BigInteger bigInteger1 = new BigInteger("1111111111111111");
        //加法
        BigInteger add = bigInteger.add(bigInteger1);
        //减法
        BigInteger subtract = bigInteger.subtract(bigInteger1);
        //乘法
        BigInteger multiply = bigInteger.multiply(bigInteger1);
        //除法
        BigInteger divide = bigInteger.divide(bigInteger1);
        System.out.println("add = " + add);
        System.out.println("subtract = " + subtract);
        System.out.println("multiply = " + multiply);
        System.out.println("divide = " + divide);

    }
}

结果

image-20240101184154530

BigDecimal类
介绍
  1. 在编程中,如果需要处理很大的浮点数,double不够用,则交给BigDecimal来处理
  2. 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
  3. 在遇到除不开的数的时候可能会抛出异常,此时就增加参数,BigDecimal.ROUND_CEILING,就会截取与子类相同长度的精度
代码
package bignum;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class BigDecimal_ {
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal("1999.123323213218888888");
        BigDecimal bigDecimal1 = new BigDecimal("2");
        //加法
        BigDecimal add = bigDecimal.add(bigDecimal1);
        //减法
        BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
        //乘法
        BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
        //除法
        BigDecimal divide = bigDecimal.divide(bigDecimal1, BigDecimal.ROUND_CEILING); //添加参数,避免除不尽的情况
        //输出这四个结果
        System.out.println("add = " + add);
        System.out.println("subtract = " + subtract);
        System.out.println("multiply = " + multiply);
        System.out.println("divide = " + divide);
    }
}

结果

image-20240101184956856

4.日期类

对于IDEA类图中的属性image-20240101190844530

如果有getter或者setter方法则表明这个方法后面的名字为属性

第一代日期类
代码
package date_;

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

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date01 {
    public static void main(String[] args) throws ParseException {
        Date date = new Date(); //获取当前系统时间
        System.out.println("当前日期为:" + date);
        Date date1 = new Date(1232134343); //通过毫秒数来确定时间,毫秒数加上1970年
        System.out.println("日期为:" + date1);

        //创建简单日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 hh:mm:ss E");
        String format = sdf.format(date); // 把当前日期格式化一下然后给一个字符串
        System.out.println("格式化之后的日期为:" + format);

        //把一个格式化的String转换成对应的Date
        String s = "2024年 01月 01日 07:24:21: 星期一";
        Date parse = sdf.parse(s); //这里会有异常的问题,直接alt + Enter抛出异常即可
        System.out.println("转换后的日期为:" + parse);

    }
}

结果

image-20240101193048893

第二代日期类(Calendar)
基本介绍
  1. Calendar是一个抽象类,并且构造器是私有的
  2. 可以通过getInstance来获取实例
代码
package date_;

import java.util.Calendar;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date02 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance(); //获取当前日期
        System.out.println("c = " + c);
        //获取日历对象的某个日历字段
        System.out.println("年:" + c.get(Calendar.YEAR));
        System.out.println("月:" + (c.get(Calendar.MONTH)+ 1)); //加一的原因是这个月份是从0开始的
        System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + c.get(Calendar.HOUR));
        System.out.println("分:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));
        //输出获取的时间的组合
        System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH)+ 1) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日" + c.get(Calendar.HOUR) + "时" + c.get(Calendar.MINUTE) + "分" + c.get(Calendar.SECOND) + "秒");
    }
}

结果

image-20240101195510128

第三代日期类
基本使用
package date_;

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

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date03 {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now(); //获取目前的时间
        System.out.println(now);
        //单独获取年月日,时分秒
        System.out.println("年 = " + now.getYear());
        System.out.println("月 = " + now.getMonth()); //英文的
        System.out.println("月 = " + now.getMonthValue()); //中文的
        System.out.println("日 = " + now.getDayOfMonth());
        System.out.println("时 = " + now.getHour());
        System.out.println("分 = " + now.getMinute());
        System.out.println("秒 = " + now.getSecond());

        LocalDate now1 = LocalDate.now(); //只可以获取年月日
        LocalTime now2 = LocalTime.now(); //只可以获取时分秒

    }
}

image-20240102191105204

进阶使用
package date_;

import java.sql.Date;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date04 {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();

        //格式化日期类
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //设置格式
        String format = dateTimeFormatter.format(now); //格式化
        System.out.println(format);

        //时间戳与Date之间的转换
        Instant now1 = Instant.now(); //获取时间戳
        System.out.println(now1);
        java.util.Date from = Date.from(now1); //时间戳 - > Date
        Instant instant = from.toInstant(); //Date - > 时间戳

        //提供plus 和 minus方法来对当前时间进行加减
        LocalDateTime localDateTime = now.plusDays(89); //当前时间加上89天
        String format1 = dateTimeFormatter.format(localDateTime);
        System.out.println(format1);

        LocalDateTime localDateTime1 = now.minusMinutes(60); //当前时间减去60分钟
        String format2 = dateTimeFormatter.format(localDateTime1);
        System.out.println(format2);
    }
}

image-20240102195303280

5.章节练习

练习一
题目

image-20240102212338445

代码
package homework11_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork01 {
    public static void main(String[] args) {
        System.out.println("反转前:" + "abcdef");
        String res = null;
        try {
            res = reverse("abcdef",1,1);
        } catch (Exception e) {
            System.out.println(e.getMessage()); //抛出异常后这里就可以抓住异常
            System.exit(-1); //出异常之后,反转后的代码就没有必要继续执行了,所以直接返回
        }
        System.out.println("反转后:" + res);
    }
    public static String reverse(String str, int start, int end) {
        //对参数做一个验证,将正确的写出来然后再取反就可以
        if (!(str != null && start >= 0 && end > start && end < str.length())) {
            throw new RuntimeException("参数不正确");
        }
        String s = str.substring(start, end + 1); //截取出来需要翻转的部分
        char[] charArray = s.toCharArray();
        char temp;
        for (int i = 0; i <= charArray.length / 2 - 1; i++) { //进行反转
            temp = charArray[i];
            charArray[i] = charArray[charArray.length - i - 1];
            charArray[charArray.length - i - 1] = temp;
        }
        String re = new String(charArray); //将反转好的部分转化成String类型
        StringBuilder stringBuilder = new StringBuilder(str); //转换成StringBuilder进行字符替换
        stringBuilder.replace(start, end + 1, re); //将反转好的部分进行替换
        return stringBuilder.toString();
    }
}

结果

image-20240102212427459

练习二
题目

image-20240103095119668

代码
package homework11_;

import java.util.Scanner;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork02 {
    public static void main(String[] args) {
        try {
            judgement();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    public static void judgement() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = scanner.next();
        //进行检验
        if (username.length() > 4 || username.length() < 2) {
            throw new RuntimeException("用户名输入有误");
        }
        System.out.println("请输入密码:");
        String password = scanner.next();
        boolean res = true;
        //判断是否都是数字
        for (char c: password.toCharArray()) {
            if (!Character.isDigit(c)) {
                res = false;
            }
        }
        if (!(res && password.length() == 6)) {
            throw new RuntimeException("密码输入有误");
        }
        System.out.println("请输入邮箱:");
        String mailbox = scanner.next();
        int a = mailbox.indexOf('@');
        int b = mailbox.indexOf('.');
        if (!(a >= 0 && a < b)) {
            throw new RuntimeException("邮箱输入有误");
        }
    }
}


结果

image-20240103095222845

练习三
题目

image-20240103100709580

代码
package homework11_;

import java.util.Scanner;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入人名,以空格分隔");
        String s = scanner.nextLine();
        String[] split = s.split(" "); //以空格分隔
        char s2 = split[1].charAt(0); //取出第二个元素的首字母
        String res = split[2].concat(",").concat(split[0]).concat(".").concat(String.valueOf(s2));
        System.out.println(res);
    }
}

结果

image-20240103100736411

练习四
题目

image-20240103100813181

代码
package homework11_;

import java.util.Scanner;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入字符串");
        String str = scanner.next();
        int big = 0;
        int small = 0;
        int number = 0;
        int other = 0;
        //按照ascii表来判断
        char[] charArray = str.toCharArray();
        for (char c:
             charArray) {
            if (c >= 'A' && c <= 'Z') {
                big ++;
            } else if (c >= 'a' && c <= 'z') {
                small ++;
            } else if (c >= '0' && c <= '9') {
                number ++;
            }else {
                other ++;
            }
        }
        System.out.println("大写:" + big + " 小写:" + small + " 数字:" + number + " 其余:" + other);
    }
}

结果

image-20240103101839746

练习五
题目

image-20240103101913835

代码
package homework11_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork05 {
    public static void main(String[] args) {
        String s1 = "hspedu";
        Animal a = new Animal(s1);
        Animal b = new Animal(s1);
        System.out.println(a == b); // a跟b指向的是两个不同的实例所以是false
        System.out.println(a.equals(b)); // a跟b不是同一个对象所以返回false
        System.out.println(a.name == b.name); //比较的是这两个String类型的引用指向的都是常量池中的同一个”hspedu“,所以返回true

        String s4 = new String("hspedu");
        String s5 = "hspedu";
        System.out.println(s1 == s4); //一个指向常量池,一个指向对象,所以返回false
        System.out.println(s4 == s5); //false

        String t1 = "hello" + s1; //两个字符串相加,其中包含字符串变量,则会返回一个新的String类型的对象
        String t2 = "hellohspedu"; //直接在常量池中找到刚才创建的
        System.out.println(t1.intern() == t2); //true
        System.out.println(t1 == t2); //false,因为t1是一个对象,t2是指向常量池
    }
}
class Animal {
    String name;

    public Animal(String name) {
        this.name = name;
    }
}

结果

image-20240103103812392

常用类

1.Math类

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Math_ {
    public static void main(String[] args) {
        //1.abs 绝对值
        int abs = Math.abs(-9);
        System.out.println(abs);

        //2.pow 求幂
        double pow = Math.pow(2, 10);
        System.out.println(pow);

        //3.ceil 向上取整,返回>=该参数的最小整数
        double ceil = Math.ceil(3.1);
        System.out.println(ceil);

        //4.floor 向下取整,返回<=该参数的最小整数
        double floor = Math.floor(3.8);
        System.out.println(floor);

        //5.round 四舍五入
        long round = Math.round(-5000.67);
        System.out.println(round);

        //6.sqrt 求开方
        double sqrt = Math.sqrt(9.0);
        System.out.println(sqrt);

        //求2-7的随机数
        for (int i = 0; i < 10; i++) {
            System.out.println(2 + (int) (Math.random() * 6)); //2 + 0到5就是2到7
        }
    }
}

2.System类

image-20240101163902484

1.exit
代码
package system_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class System_ {
    public static void main(String[] args) {
        // exit 退出当前程序
        System.out.println("1");
        System.exit(0); //正常情况退出
        System.out.println("2");
    }
}

结果

image-20240101163945623

2.arraycopy
参数解释

image-20240101164126728

代码
package system_;

import java.util.Arrays;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class System_ {
    public static void main(String[] args) {
        int[] src = new int[]{1,2,3};
        int[] dest = new int[3];
        System.arraycopy(src, 0, dest, 0, src.length); //从src数组的0位置复制到dest的0位置,复制src的所有元素
        System.out.println(Arrays.toString(dest));
    }
}

结果

image-20240101164507525

3.currentTimeMillens
代码
package system_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class CurrentTimeMillens {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());
    }
}

结果

image-20240101190102867

3.大数处理方案

基本介绍

image-20240101183101947

BigInteger类
介绍
  1. 在编程中,如果需要处理很大的整数,long不够用, 则交给BigInteger来处理
  2. 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
代码
package bignum;

import java.math.BigInteger;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class BigInteger_ {
    public static void main(String[] args) {
        BigInteger bigInteger = new BigInteger("33333333333333333333333333333333333333333333333333333333333333");
        System.out.println(bigInteger);
        BigInteger bigInteger1 = new BigInteger("1111111111111111");
        //加法
        BigInteger add = bigInteger.add(bigInteger1);
        //减法
        BigInteger subtract = bigInteger.subtract(bigInteger1);
        //乘法
        BigInteger multiply = bigInteger.multiply(bigInteger1);
        //除法
        BigInteger divide = bigInteger.divide(bigInteger1);
        System.out.println("add = " + add);
        System.out.println("subtract = " + subtract);
        System.out.println("multiply = " + multiply);
        System.out.println("divide = " + divide);

    }
}

结果

image-20240101184154530

BigDecimal类
介绍
  1. 在编程中,如果需要处理很大的浮点数,double不够用,则交给BigDecimal来处理
  2. 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
  3. 在遇到除不开的数的时候可能会抛出异常,此时就增加参数,BigDecimal.ROUND_CEILING,就会截取与子类相同长度的精度
代码
package bignum;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class BigDecimal_ {
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal("1999.123323213218888888");
        BigDecimal bigDecimal1 = new BigDecimal("2");
        //加法
        BigDecimal add = bigDecimal.add(bigDecimal1);
        //减法
        BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
        //乘法
        BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
        //除法
        BigDecimal divide = bigDecimal.divide(bigDecimal1, BigDecimal.ROUND_CEILING); //添加参数,避免除不尽的情况
        //输出这四个结果
        System.out.println("add = " + add);
        System.out.println("subtract = " + subtract);
        System.out.println("multiply = " + multiply);
        System.out.println("divide = " + divide);
    }
}

结果

image-20240101184956856

4.日期类

对于IDEA类图中的属性image-20240101190844530

如果有getter或者setter方法则表明这个方法后面的名字为属性

第一代日期类
代码
package date_;

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

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date01 {
    public static void main(String[] args) throws ParseException {
        Date date = new Date(); //获取当前系统时间
        System.out.println("当前日期为:" + date);
        Date date1 = new Date(1232134343); //通过毫秒数来确定时间,毫秒数加上1970年
        System.out.println("日期为:" + date1);

        //创建简单日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 hh:mm:ss E");
        String format = sdf.format(date); // 把当前日期格式化一下然后给一个字符串
        System.out.println("格式化之后的日期为:" + format);

        //把一个格式化的String转换成对应的Date
        String s = "2024年 01月 01日 07:24:21: 星期一";
        Date parse = sdf.parse(s); //这里会有异常的问题,直接alt + Enter抛出异常即可
        System.out.println("转换后的日期为:" + parse);

    }
}

结果

image-20240101193048893

第二代日期类(Calendar)
基本介绍
  1. Calendar是一个抽象类,并且构造器是私有的
  2. 可以通过getInstance来获取实例
代码
package date_;

import java.util.Calendar;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date02 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance(); //获取当前日期
        System.out.println("c = " + c);
        //获取日历对象的某个日历字段
        System.out.println("年:" + c.get(Calendar.YEAR));
        System.out.println("月:" + (c.get(Calendar.MONTH)+ 1)); //加一的原因是这个月份是从0开始的
        System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + c.get(Calendar.HOUR));
        System.out.println("分:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));
        //输出获取的时间的组合
        System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH)+ 1) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日" + c.get(Calendar.HOUR) + "时" + c.get(Calendar.MINUTE) + "分" + c.get(Calendar.SECOND) + "秒");
    }
}

结果

image-20240101195510128

第三代日期类
基本使用
package date_;

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

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date03 {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now(); //获取目前的时间
        System.out.println(now);
        //单独获取年月日,时分秒
        System.out.println("年 = " + now.getYear());
        System.out.println("月 = " + now.getMonth()); //英文的
        System.out.println("月 = " + now.getMonthValue()); //中文的
        System.out.println("日 = " + now.getDayOfMonth());
        System.out.println("时 = " + now.getHour());
        System.out.println("分 = " + now.getMinute());
        System.out.println("秒 = " + now.getSecond());

        LocalDate now1 = LocalDate.now(); //只可以获取年月日
        LocalTime now2 = LocalTime.now(); //只可以获取时分秒

    }
}

image-20240102191105204

进阶使用
package date_;

import java.sql.Date;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Date04 {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();

        //格式化日期类
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //设置格式
        String format = dateTimeFormatter.format(now); //格式化
        System.out.println(format);

        //时间戳与Date之间的转换
        Instant now1 = Instant.now(); //获取时间戳
        System.out.println(now1);
        java.util.Date from = Date.from(now1); //时间戳 - > Date
        Instant instant = from.toInstant(); //Date - > 时间戳

        //提供plus 和 minus方法来对当前时间进行加减
        LocalDateTime localDateTime = now.plusDays(89); //当前时间加上89天
        String format1 = dateTimeFormatter.format(localDateTime);
        System.out.println(format1);

        LocalDateTime localDateTime1 = now.minusMinutes(60); //当前时间减去60分钟
        String format2 = dateTimeFormatter.format(localDateTime1);
        System.out.println(format2);
    }
}

image-20240102195303280

5.章节练习

练习一
题目

image-20240102212338445

代码
package homework11_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork01 {
    public static void main(String[] args) {
        System.out.println("反转前:" + "abcdef");
        String res = null;
        try {
            res = reverse("abcdef",1,1);
        } catch (Exception e) {
            System.out.println(e.getMessage()); //抛出异常后这里就可以抓住异常
            System.exit(-1); //出异常之后,反转后的代码就没有必要继续执行了,所以直接返回
        }
        System.out.println("反转后:" + res);
    }
    public static String reverse(String str, int start, int end) {
        //对参数做一个验证,将正确的写出来然后再取反就可以
        if (!(str != null && start >= 0 && end > start && end < str.length())) {
            throw new RuntimeException("参数不正确");
        }
        String s = str.substring(start, end + 1); //截取出来需要翻转的部分
        char[] charArray = s.toCharArray();
        char temp;
        for (int i = 0; i <= charArray.length / 2 - 1; i++) { //进行反转
            temp = charArray[i];
            charArray[i] = charArray[charArray.length - i - 1];
            charArray[charArray.length - i - 1] = temp;
        }
        String re = new String(charArray); //将反转好的部分转化成String类型
        StringBuilder stringBuilder = new StringBuilder(str); //转换成StringBuilder进行字符替换
        stringBuilder.replace(start, end + 1, re); //将反转好的部分进行替换
        return stringBuilder.toString();
    }
}

结果

image-20240102212427459

练习二
题目

image-20240103095119668

代码
package homework11_;

import java.util.Scanner;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork02 {
    public static void main(String[] args) {
        try {
            judgement();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    public static void judgement() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = scanner.next();
        //进行检验
        if (username.length() > 4 || username.length() < 2) {
            throw new RuntimeException("用户名输入有误");
        }
        System.out.println("请输入密码:");
        String password = scanner.next();
        boolean res = true;
        //判断是否都是数字
        for (char c: password.toCharArray()) {
            if (!Character.isDigit(c)) {
                res = false;
            }
        }
        if (!(res && password.length() == 6)) {
            throw new RuntimeException("密码输入有误");
        }
        System.out.println("请输入邮箱:");
        String mailbox = scanner.next();
        int a = mailbox.indexOf('@');
        int b = mailbox.indexOf('.');
        if (!(a >= 0 && a < b)) {
            throw new RuntimeException("邮箱输入有误");
        }
    }
}


结果

image-20240103095222845

练习三
题目

image-20240103100709580

代码
package homework11_;

import java.util.Scanner;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入人名,以空格分隔");
        String s = scanner.nextLine();
        String[] split = s.split(" "); //以空格分隔
        char s2 = split[1].charAt(0); //取出第二个元素的首字母
        String res = split[2].concat(",").concat(split[0]).concat(".").concat(String.valueOf(s2));
        System.out.println(res);
    }
}

结果

image-20240103100736411

练习四
题目

image-20240103100813181

代码
package homework11_;

import java.util.Scanner;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入字符串");
        String str = scanner.next();
        int big = 0;
        int small = 0;
        int number = 0;
        int other = 0;
        //按照ascii表来判断
        char[] charArray = str.toCharArray();
        for (char c:
             charArray) {
            if (c >= 'A' && c <= 'Z') {
                big ++;
            } else if (c >= 'a' && c <= 'z') {
                small ++;
            } else if (c >= '0' && c <= '9') {
                number ++;
            }else {
                other ++;
            }
        }
        System.out.println("大写:" + big + " 小写:" + small + " 数字:" + number + " 其余:" + other);
    }
}

结果

image-20240103101839746

练习五
题目

image-20240103101913835

代码
package homework11_;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class HomeWork05 {
    public static void main(String[] args) {
        String s1 = "hspedu";
        Animal a = new Animal(s1);
        Animal b = new Animal(s1);
        System.out.println(a == b); // a跟b指向的是两个不同的实例所以是false
        System.out.println(a.equals(b)); // a跟b不是同一个对象所以返回false
        System.out.println(a.name == b.name); //比较的是这两个String类型的引用指向的都是常量池中的同一个”hspedu“,所以返回true

        String s4 = new String("hspedu");
        String s5 = "hspedu";
        System.out.println(s1 == s4); //一个指向常量池,一个指向对象,所以返回false
        System.out.println(s4 == s5); //false

        String t1 = "hello" + s1; //两个字符串相加,其中包含字符串变量,则会返回一个新的String类型的对象
        String t2 = "hellohspedu"; //直接在常量池中找到刚才创建的
        System.out.println(t1.intern() == t2); //true
        System.out.println(t1 == t2); //false,因为t1是一个对象,t2是指向常量池
    }
}
class Animal {
    String name;

    public Animal(String name) {
        this.name = name;
    }
}

结果

image-20240103103812392

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/483581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

能降低嵌入式系统功耗的三个技术

为电池寿命设计嵌入式系统已经成为许多团队重要的设计考虑因素。优化电池寿命的能力有助于降低现场维护成本&#xff0c;并确保客户不需要不断更换或充电电池&#xff0c;从而获得良好的产品体验。 团队通常使用一些标准技术来提高电池寿命&#xff0c;例如将处理器置于低功耗…

RIPGeo代码理解(六)main.py(运行模型进行训练和测试)

​代码链接:RIPGeo代码实现 ├── preprocess.py # 预处理数据集并为模型运行执行IP聚类 ├── main.py # 运行模型进行训练和测试 ├── test.py #加载检查点,然后测试 一、导入各种模块和数据库 import torch.nnfrom lib.utils import * import argparse i…

162、应急响应——网站入侵篡改指南Webshell内存马查杀漏洞排查时间分析

文章目录 IIS&.NET—注入—基于时间配合日志分析Apache&PHP—漏洞—基于漏洞配合日志分析Tomcat&JSP—弱口令—基于后门配合日志分析查杀常规后门查杀内存马 需要了解&#xff1a; 异常检测、处置流程、分析报告等 网站被入侵会出现异常&#xff1a;流量异常、防护…

Git版本控制

这是两个学习Git推荐必看的文档&#xff0c;第一个链接是Git的官方权威文档&#xff0c;第二个链接是国内程序员在开发中&#xff0c;总结的Git快速入门教程&#xff0c;掌握这个&#xff0c;也足够应付在工作中的场景。 Git权威书籍《ProGit》中文版https://gitee.com/progit…

Web框架开发-Ajax

一、 Ajax准备知识:json 1、json(Javascript Obiect Notation,JS对象标记)是一种轻量级的数据交换格式 1 2 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。…

从redis安装到使用再到源码和底层原理分析指南【万字长文】

Redis 安装redis-cli记录单线程多路IO复用Redis字符串Redis列表 事务Redis悲观锁和乐观锁AOF主从集群概念slots Redis应用问题解决缓存穿透缓存击穿缓存雪崩分布式锁 重启和停止redis server配置登陆密码 配置外网访问Redis源码学习server守护进程实现server处理信号redis obje…

每日一题——LeetCode2549.统计桌面上的不同数字

方法一 模拟 维护一个数组arr&#xff0c;初始值为n,每次循环将arr[i] % j(1<j<n) 如果结果为1则将j加入&#xff0c; 最后将arr转为Set集合去重&#xff0c;Set的长度就是答案 var distinctIntegers function(n) {let arr[]arr.push(n)for(let i0;i<arr.length;i…

JAVA毕业设计131—基于Java+Springboot+Vue的餐厅点餐系统(源代码+数据库+4000字文档)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的餐厅点餐系统(源代码数据库4000字文档)131 一、系统介绍 本项目前后端分离&#xff0c;分为管理员、用户两种角色 1、用户&#xff1a; 注册、登录、点餐…

SpringBoot2.x 整合SpringDocJavadocknife4j实现无注解零入侵式接口文档

说明 基于 javadoc 无注解零入侵生成规范的 openapi 结构体。 文档工具使用 由于框架采用 openapi 行业规范 故市面上大部分的框架均支持 可自行选择 例如: apifox apipost postman torna knife4j 等 根据对应工具的文档接入即可 Swagger升级SpringDoc指南 常见功能如下 其他…

RHEL9部署Docker环境

华子目录 Docker引擎架构docker引擎架构示意图执行过程示例 RHEL9上安装Docker1.系统要求2.安装yum-utils工具包3.yum安装docker-ce4.配置docker镜像加速docker拉取镜像的过程配置阿里云镜像仓库重新加载守护进程重启Docker服务 5.拉取并运行hello-world镜像6.测试是否安装成功…

【Godot4.2】基础知识 - Godot中的2D向量

概述 在Godot中&#xff0c;乃至一切游戏编程中&#xff0c;你应该都躲不开向量。这是每一个初学者都应该知道和掌握的内容&#xff0c;否则你将很难理解和实现某些其实原理非常简单的东西。 估计很多刚入坑Godot的小伙伴和我一样&#xff0c;不一定是计算机专业或编程相关专…

ROS机器人入门第二课:ROS集成开发环境搭建

文章目录 ROS机器人入门第二课&#xff1a;ROS集成开发环境搭建一、安装终端&#xff08;一&#xff09;安装Terminator&#xff08;二&#xff09;添加到收藏夹&#xff08;三&#xff09;Terminator 常用快捷键第一部份&#xff1a;关于在同一个标签内的操作第二部份&#xf…

【开发环境搭建篇】Nacos的安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

01-机器学习概述

机器学习的定义 机器学习是一门从数据中研究算法的科学学科。 机器学习直白来讲&#xff0c; 就是根据已有的数据&#xff0c;进行算法选择&#xff0c;并基于算法和数据 构建模型&#xff0c;最终对未来进行预测。 机器学习就是一个模拟人决策过程的一种程序结构。 机器学…

系统大屏可视化展示平台解决方案(原件)

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.7.系统权限设计 3.8.数据查询过程设…

隐私计算实训营学习三:隐私计算框架的架构和技术要点

文章目录 一、隐语架构二、产品层三、算法层3.1 PSI与PIR3.2 Data Analysis-SCQL3.3 Federated Learning 四、计算层4.1 混合调度编译-RayFed4.2 密态引擎4.3 密码原语YACL 五、资源管理层六、互联互通七、跨域管控 一、隐语架构 1、完备性&#xff1a;支持多种技术&#xff0…

QT:QTableWidget表格中加入勾选框

1.新建QTableWidget控件&#xff1a;tableWidget_TestResult 2.举例&#xff1a;在第一行第一列添加一个勾选框 //添加选择框QTableWidgetItem* check0 new QTableWidgetItem();check0->setCheckState(Qt::Checked);ui->tableWidget_TestResult->setItem(0, 0, chec…

Redis如何删除大key

参考阿里云Redis规范 查找大key&#xff1a; redis-cli --bigkeys 1、String类型&#xff1a; Redis 4.0及以后版本提供了UNLINK命令&#xff0c;该命令与DEL命令类似&#xff0c;但它会在后台异步删除key&#xff0c;不会阻塞当前客户端&#xff0c;也不会阻塞Redis服务器的…

C语言函数和数组

目录 一.数组 一.一维数组&#xff1a; 1.一维数组的创建: 2.一维数组的初始化&#xff1a; 3.一维数组的使用 4.一维数组在内存中的存储&#xff1a; 二.二维数组&#xff1a; 三.数组越界&#xff1a; 四.数组作为函数参数&#xff1a; 二.函数 一.函数是什么&…

NVIDIA最新 Blackwell架构简介

NVIDIA Blackwell架构简介 在AI和大型语言模型&#xff08;LLMs&#xff09;迅速发展的领域中&#xff0c;追求实时性能和可扩展性至关重要。从医疗保健到汽车行业&#xff0c;组织正深入探索生成性AI和加速计算解决方案的领域。对生成性AI解决方案的需求激增&#xff0c;促使企…
最新文章