day07-javaAPI

1. API

1.1 API概述

  1. API application programming interface 应用程序接口
  2. java API java jdk中提供各种类
  3. 查看帮助文档
    1. 搜索-类
    2. 类所在的包,java.lang 不用导包
    3. 类的描述信息
    4. 类的构造方法
    5. 类的成员方法 返回值 方法名 参数 方法的作用

1.2 测试Random Scanner

  1. CTRL + ALT + V 快捷键 生成左边变量

  2. demo

    import java.util.Scanner;
    
    public class DemoScanner {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();
            int anInt = sc.nextInt();
            double aDouble = sc.nextDouble();
        }
    }
    
    

2. String

2.1 介绍

  1. Stringjava.lang 包下,不用导包
  2. String 代表字符串 ""下包含的字符串都是String的对象
  3. 字符串创建后不能更改, 字符串不可变
  4. 字符串 可以共享
  5. 字符串效果上是char[] 但底层原理是byte[]

2.2 字符串构造方法

方法说明
public String();返回空字符串
public String(char[] chs);返回字符数组组成的字符串
public String(byte[] bys);返回byte数组组成的字符串
String s = “123”;返回"123"
  1. demo

    public class DemoStringTest {
        public static void main(String[] args) {
            String s1 = new String(); // 无参构造方法
            String s2 = new String(new char[]{'1', '2', '3'});
            String s3 = new String(new byte[]{25, 27, 37});
            String s4 = "123";
            System.out.println(s1); 
            System.out.println(s2); // 123
            System.out.println(s3); 
            System.out.println(s4); // 123
        }
    }
    
  2. string 的特点

    1. new 字符串构造方法 每一次new都会开辟不同的空间,所以new出来的值可能相同,但地址不同
    2. String s = "123" 直接赋值,只要字符串一样不管有几个变量,所指向的地址都相同,创建的都是同一个对象
    3. "123"创建的字符串在jvm堆内存的常量池中

2.3 字符串的比较== equals()

  1. ==

    1. 基本数据类型,数值是否相同
    2. 引用数据类型 地址是否相同
  2. 方法:s1.equals(s2) 字符串s2与s1是否相同

  3. demo

    char[] chs = {'1','2','3'};
    String s1 = new String(chs);
    String s2 = new String(chs);
    String s3 = "123";
    String s4 = "123";
    System.out.println(s1 == s2); // 地址不同
    System.out.println(s1.equals(s2)); // 值相同
    
    System.out.println(s3 == s4); // 地址相同
    System.out.println(s3.equals(s4)); // 值相同
    
    System.out.println(s1 == s3); // 地址不同
    System.out.println(s1.equals(s3)); // 值相同
    
  4. demo 模拟登陆

    Scanner sc = new Scanner(System.in);
    
    for(int i = 0; i < 3; ++i){
        System.out.println("输入用户名");
        String username = sc.nextLine();
        System.out.println("输入密码");
        String password = sc.nextLine();
        if (username.equals("xiaoming") && password.equals("123456")) {
            System.out.println("登录成功");
            break;
        } else {
            System.out.println("登录失败,再次尝试");
        }
    
    }
    

2.4 遍历字符串 s.legth() s.charAt(索引)

Scanner sc = new Scanner(System.in);
String s = sc.nextLine();

for (int i = 0; i < s.length(); i++) {
    System.out.println(s.charAt(i));
}

  1. 统计字符次数 大写 小写 数字

    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    int big = 0;
    int small = 0;
    int num = 0;
    
    for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);
        if (ch >= 'a' && ch <= 'z'){
            small += 1;
        } else if (ch >= 'A' && ch <= 'Z'){
            big += 1;
        }else if (ch >= '0' && ch <= '9') {
            num += 1;
        } else {
    
        }
    }
    System.out.println(big);
    System.out.println(small);
    System.out.println(num);
    
  2. 反转字符串

    public static void main(String[] args) {
        String s = "1234";
        System.out.println(reverseString(s));
    }
    public static String reverseString(String s){
        String res = "";
        for (int i = s.length() - 1; i >= 0; i--) {
            res += s.charAt(i);
        }
        return res;
    }
    

3. StringBuilder()

3.1 字符串拼接内存解析

  1. String s = "Hello" 堆内存中常量池中出现Hello 并将地址(001)s
  2. s += "_Java" 堆内存中常量池中出现_Java地址(002)
  3. 堆内存中常量池中出现"Hello_Java" 地址(003) 并将地址给 s

3.2 StringBuilder()

  1. StringBuilder()可变字符串类
  2. String 内容不可变,StrigBuilder() 内容可变

3.2 StringBuilder()构造方法

方法说明
StringBuilder()可变的空字符串
StringBuilder(String s)可变的字符串
StringBuilder s1 = new StringBuilder();
System.out.println(s1.length()); // s1.length()长度
StringBuilder s2 = new StringBuilder("123");
System.out.println(s2);

3.3 StringBuilder 末尾添加append,反转reverse

  1. append返回对象本身,对象本身修改了

  2. 链式编程,同一对象

    s.append("hello");
    s.append("java");
    s.append("china");
    // 链式编程
    // s.append("hello").append("java")append("china");
    System.out.println(s);  // hellojavachina
    System.out.println(s.reverse()); // anihcavajolleh
    

3.4 StringBuilder 和 String 相互转换

  1. 转String:StringBuilder().toString()

  2. 转StringBuilder:StringBuilder(String s)

  3. demo

    StringBuilder s1 = new StringBuilder();
    s1.append("hello");
    String s2 = s1.toString();
    System.out.println(s2);
    s1 = new StringBuilder(s2);
    s1.reverse();
    s2 = s1.toString();
    System.out.println(s2);
    
  4. 拼接字符串

    public static void main(String[] args) {
        int[] nums = {1,2,3,4,5,6};
        System.out.println(connectString(nums));
    
    }
    public static String connectString(int[] nums) {
        StringBuilder S = new StringBuilder();
        S.append("[");
        for (int i : nums) {
            S.append(i).append(",");
        }
        S.deleteCharAt(S.length() - 1);
        S.append("]");
        return S.toString();
    }
    
  5. 反转字符串

    public static void main(String[] args) {
        String s = "java";
        System.out.println(reverseString(s));
    }
    public static String reverseString(String s) {
        StringBuilder S = new StringBuilder(s);
        return  S.reverse().toString();
        // 匿名对象链式编程
        // return new StringBuilder(s).reverse().toString()
    }
    

4. Math

4.1 简介

  1. 数字计算方法
  2. final修饰没有子类

4.2 没有构造方法

4.3 常用方法

  1. static修饰 类名直接调用

  2. 常用方法

    方法说明
    public static int abs(int a)绝对值
    public static double ceil(double a)向上取整>=a
    public static double floor(double a)向下取整<=a
    public static int round(double a)四舍五入
    public static int max(int a, int b)最大值
    public static int min(int a, int b)最小值
    public static double power(double a, double)a的b次方
    public static double random()[0.0, 1)随机小数

5. System

5.1 简介

  1. final修饰,没有子类
  2. 没有构造方法

5.2 常用方法

方法说明
public static void exit(int status)终止jvm运行 0正常退出 非0异常退出
pulic static long currentTimeMillis()当前时间毫秒

6. Object

6.1 简介

  1. 所有类的超类,定义的类直接或简介继承Object

6.2 只有无参构造方法

6.3 常用方法

方法说明
public boolean equals(Object obj)引用地址是否相同
public String toString()建议重写
public class DemoObject {

    private String name;

    public DemoObject() {
    }

    public DemoObject(String s) {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "DemoObject{" +
                "name='" + name + '\'' +
                '}';
    }
}

public class Demo {
    public static void main(String[] args) {
        DemoObject demoObject = new DemoObject("123");
        DemoObject demoObject2 = new DemoObject("245");
        System.out.println(demoObject.equals(demoObject2));


    }
}

7. Arrays

7.1 简介

  1. 数组的常见方法

7.2 没有构造方法

7.3 常用方法

  1. 常用方法

    方法说明
    public static String toString(int [])数组以字符串形式输出
    public static void sort(int [])排序
  2. demo

    public class DemoArrays {
        public static void main(String[] args) {
            int[] nums = {1,2,7,6,5,4,3,2};
            System.out.println(Arrays.toString(nums));
            Arrays.sort(nums);
            System.out.println(Arrays.toString(nums));
        }
    }
    /*
    [1, 2, 7, 6, 5, 4, 3, 2]
    [1, 2, 2, 3, 4, 5, 6, 7]
    */
    

7.4 工具类

  1. 构造方法 private 修饰
  2. 成员方法 public static 修饰

8. 基本类型包装类

8.1 简介

  1. 方便基本类型和String相互转换

  2. 定义操作和方法

  3. 类型

    基本类型
    byteByte
    shortShort
    intInteger
    longLong
    floatFloat
    doubleDouble
    charCharacter
    booleanBoolean

8.2 Integer

  1. 构造:

    public static void main(String[] args) {
        Integer a = Integer.valueOf(123);
        System.out.println(a);
    
        Integer b = Integer.valueOf("456");
        System.out.println(b);
    
    }
    
  2. 整数转字符串 String.valueOf(int a)

    int a = 123;
    String s = String.valueOf(a) 
    
  3. 字符串转整数 Integer.parseInt(String s)

    String s = "123";
    int a = Integer.parseInt(s);
    

8.3 字符串分割排序split()

public static void main(String[] args) {
    String s = "90 12 34 56 78";

    String[] sl = s.split(" ");
    System.out.println(Arrays.toString(sl));

    int[] nums = new int[sl.length];
    for (int i = 0; i < sl.length; i++) {
        nums[i] = Integer.parseInt(sl[i]);
    }
    System.out.println(Arrays.toString(nums));

    Arrays.sort(nums);
    System.out.println(Arrays.toString(nums));

    StringBuilder sb = new StringBuilder();
    for (int x : nums){
        sb.append(String.valueOf(x));
    }
    System.out.println(sb.toString());
}

8.4 装箱拆箱

  1. 装箱 – 基本数据类型转换为包装类

  2. 拆箱 – 包装类转换为基本数据类型

  3. demo intValue(), valueOf(int a)

    public static void main(String[] args) {
        int a = 100;
        //Integer aI = Integer.valueOf(a); // 手动装箱
        Integer aI = a; // 自动装箱
    
        // int b = aI.intValue() + 200; // 手动拆箱
        int b = aI + 200; // 自动拆箱
        System.out.println(b);
    
    }
    

9. Date

9.1 简介

  1. 两个包下面都有Date类 (until,sql)

9.2 构造方法

  1. 无参构造

  2. 有参构造,传毫秒数

  3. demo

    Date d1 = new Date();
    System.out.println(d1);
    
    Date d2 = new Date(System.currentTimeMillis());
    System.out.println(d2);
    

9.3 常用方法

方法说明
public long getTime()日期对象与1970年1月1日 00:00:00之间的毫秒值
public void setTime(long time)设置时间毫秒数

10. SimpleDateFormat

10.1 简介

  1. 日期解析和格式化
  2. y-年 M-月 d-日 H-时 m-分 s-秒

10.2 构造和格式化

  1. 构造

    1. 无参构造 - 默认显示格式
    2. 有参构造 - 自己设置格式
  2. 格式化

    1. format() – 时间转字符串
    2. parse() – 字符串转时间
  3. demo

    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat();
        System.out.println(dateFormat.format(date));
        SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(dateFormat2.format(date));
    
        Date d2 = new Date();
    
        d2 = dateFormat2.parse("2020-12-19 17:17:34");
        System.out.println(d2);
    }
    

10.3 时间工具

public class DatetimeUntil {
    private DatetimeUntil() {}

    public static String datetimeToString(Date date, String format){
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        return dateFormat.format(date);
    }

    public static Date stingToDatetime(String date, String format) throws ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        return dateFormat.parse(date);
    }
}

11. Calender 抽象类

11.1 简介

  1. 抽象类
  2. 日历解析

11.2 构造方法

  1. Calendar.getInstance();

  2. demo (月份从0开始)

    public static void main(String[] args) {
        Calendar ca = Calendar.getInstance();
        System.out.println(ca.get(Calendar.YEAR));
        System.out.println(ca.get(Calendar.MONTH) + 1);
    }
    

11.3 常见方法

方法说明
public int get(int field)得到年月日数值
public abstract void add(int field, int amount)年月日加减数值
public final void set(int year, int month, int date)设置年月日
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();

    calendar.set(2000,2,1); // 3月1日 --月份从0开始
    calendar.add(Calendar.DATE, -1);
    System.out.println(calendar.get(Calendar.DATE));;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值