Java API

目录

一、Scanner

二、Object

 三、String

1.String的创建方式

2.String常用方法

四、StringBuilder

 五、Arrays工具类

 六、包装类

七、Date

八、SimpleDateFormat

九、Calendar


一、Scanner

scanner中的方法:

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sn = new Scanner(System.in);

        //1.接受整形数据,结束标志为/r/n,但不会将/r/n接收进去
        System.out.println(sn.nextInt());

        //2.接收字符串数据,结束标志为/r/n,会将/r/n接收进去
        System.out.println(sn.nextLine());

        //3.接收字符串数据,结束标志为空格,在回车之后也不会将/r/n接收进去
        System.out.println(sn.next());

        System.out.println(sn.nextLine());
    }
}

问题:若在nextInt()与next()输入数据后就直接回车运行,则可以明显发现错误,两次nextLine()都会被跳过不执行。

原因:nextInt()与next()不会将/r/n接收进去,所以在输入数据后直接回车则会导致下一次的输入第一个符号就是/r/n导致直接结束。

解决方法一:

在nextInt()与next()后加空格再将要输入进nextLine()的数字输入再进行回车则不会跳过nextLine().

原因:

输入数据后添加相对应的结束符再直接输入下次输入的数据进行回车,则不会出现/r/n在下次输入时出现,使数据可以正常输入。

解决方法二:(推荐)

使用包装类Integer类型转换

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sn = new Scanner(System.in);

        //先将数字用字符串的形式输入
        String numString = sn.nextLine();

        //将字符串用包装类Interger的静态方法将数字字符串转成整形
        int num = Integer.parseInt(numString);
        System.out.println(num);

        //正常输入下一个字符串
        System.out.println(sn.nextLine());
    }
}

二、Object

Object中的两个成员方法

1.public String toString()

会返回该对象的地址值,子类一般对此方法重写。

在直接使用对象名使会调用该方法。

//未重写toString
public class NonRewrite {
    int num;
    String name;

    public NonRewrite(int num, String name) {
        this.num = num;
        this.name = name;
    }
}
//重写toString
public class Rewrite extends Object {
    int num;
    String name;

    public Rewrite(int num, String name) {
        this.num = num;
        this.name = name;
    }

    @Override
    public String toString() {
        return "ObjectSon{" +
                "num=" + num +
                ", name='" + name + '\'' +
                '}';
    }
}
//测试
public class Test {
    public static void main(String[] args) {
        NonRewrite nr = new NonRewrite(15,"李四");
        System.out.println(nr);//未重写会输出地址

        Rewrite rw = new Rewrite(10,"张三");
        System.out.println(rw);//重写会调用重写方法,与rw.toString()相同
    }
}

2.public boolean equals(Object obj)

//定义类
import java.util.Objects;

public class Student {
    int num;
    String name;

    public Student(int num,String name) {
        this.num = num;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return num == student.num &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(num, name);
    }
}
//测试
public class Test {
    public static void main(String[] args) {
        Student student1 = new Student(10,"张三");
        Student student2 = new Student(10,"张三");
        System.out.println(student1==student2); // 比较地址值
        System.out.println(student1.equals(student2));//比较对象元素
    }
}

 三、String

String是不可变对象

1.String的创建方式

public class Test {
    public static void main(String[] args) {
        //String的创建方式:

        //1.
        //"abc"会存在方法区的常量池,赋值时会在常量池查看是否已有对应常量,有则会直接对其引用不会重新创建
        String str1 = "abc";
        String str2 = "abc";
        System.out.println(str1==str2);
        System.out.println(str1);
        
        //2.
        //当使用new则会在堆中创建新对象,不会查看是否有相同对象(不是指地址相同),直接创建
        String str3 = new String("abc");
        String str4 = new String("abc");
        System.out.println(str3==str4);
        System.out.println(str3);

        //3.
        char[] charLst = {'a','b','c'};
        String str5 = new String(charLst);
        System.out.println(str5);

        //4.左闭右开
        String str6 = new String(charLst,0,2);
        System.out.println(str6);

        //5.
        byte[] byteLst = {'a','b','c'};
        String str7 = new String(byteLst);
        System.out.println(str7);

        //6.
        String str8 = new String(byteLst,0,2);
        System.out.println(str8);
    }
}

2.String常用方法

public class Test {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "bcd";
        String str3 = "ABC";

        System.out.println(str1 == str2);   //判断地址是否相同

        System.out.println(str1.equals(str2));  //String已经重写了equals()函数,判断两个对象是否相等

        System.out.println(str1.equals(str3));

        System.out.println(str1.equalsIgnoreCase(str3));    //忽略大小写

        System.out.println(str1.length());  //放回字符串长度

        System.out.println(str1.charAt(0)); //放回字符串第几位的字符,从零开始

        System.out.println(str1.concat(str2));  //拼接字符串
    }
}

四、StringBuilder

StringBuilder类在java.lang包下, 可直接使用。

StringBuilder对象中的内容是可变的。

满足了String不可变的需求。

public class Test {
    public static void main(String[] args) {
        //无参创造对象
        StringBuilder sb1 = new StringBuilder();

        //String类型传入参数,已重写toString对象
        StringBuilder sb2 = new StringBuilder("abc");
        System.out.println(sb2);

        //append()函数拼接字符串
        System.out.println(sb1.append("abc"));  //返回一个拼接后的新对象
        System.out.println(sb2.append("efg"));
        System.out.println(sb1);    //自身也会改变为拼接后的字符串
        System.out.println(sb2);

        System.out.println(sb1.reverse());  //返回一个翻转后的新对象
        System.out.println(sb1);    //自身也会改变为翻转后的字符串

        String str = sb1.toString();    //转为String
    }
}

 五、Arrays工具类

Arrays是针对数组进行操作的工具类,在java.util下,需要导包。

工具类的规范:

1.构造方法私有化,外界无法调用其构造函数,从而达到无法创造Arrays实例对象的目的。

2.成员方法都是静态的,因无法创造Arrays实例对象,只有通过静态方法能被外界调用。

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        int[] arr ={4,3,2,1};
        System.out.println(Arrays.toString(arr));    //转为字符串类型
        Arrays.sort(arr);                            //排序
        System.out.println(Arrays.toString(arr));
    }
}

 六、包装类

为了对基本类型进行更多更方便的操作,对每种基本类型提供了对应的引用类型即包装类。

基本类型byteshortcharintlongfloatdoubleboolean
包装类ByteShortCharacterintegerLongFloatDoubleBoolean
//Integer
public class Test {
    public static void main(String[] args) {
        //两种方式创建Integer对象
        Integer num = new Integer(123); //参数为int
        Integer str = new Integer("321");   //参数为String
        System.out.println(num);                //已重写toString()方法
        System.out.println(str);
        
        //String -> int
        //1.
        String strg = "123";
        Integer int_s = new Integer(strg);
        //2.
        System.out.println(int_s.intValue());
        System.out.println(Integer.parseInt(strg));

        //自动装箱
        Integer auto = 111;
        System.out.println(auto);
        System.out.println(auto+111);
    }
}

七、Date

Date类可以用于获取当前时间与设定时间,还可用于时间与时间戳的转换

import java.util.Date;

public class Test {
    public static void main(String[] args) {
        //创建Date对象
        Date date1 = new Date();
        Date date2 = new Date(0L);
        System.out.println(date1);
        System.out.println(date2);

        //设置时间(使用时间戳)
        date1.setTime(15948984819884L);
        System.out.println(date1);
        //获取时间(获得时间戳)
        System.out.println(date1.getTime());
    }
}

八、SimpleDateFormat

SimpleDateFormat类用于格式化字符串与时间之间的转化

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

public class Test {
    public static void main(String[] args) throws ParseException {
        Date date = new Date(1594898481984L);
        String str = "2020年4月4日 12:22:30";
        //未格式化时间
        System.out.println(date);
        //创建SimpleDateFormat对象
        SimpleDateFormat sd = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //格式化
        System.out.println(sd.format(date));
        //将已经格式化的字符串转成时间
        System.out.println(sd.parse(str));
    }
}

九、Calendar

calendar类可以对日期进行操作

import java.util.Calendar;

public class Test {
    public static void main(String[] args){
        //该类为抽象类,需要通过调用Calendar.getInstance()获取该类的子类获取对象
        Calendar cld = Calendar.getInstance();
        System.out.println(cld.get(Calendar.YEAR)); //静态成员为int类型,可以填写对应的数字
        System.out.println(cld.get(Calendar.MONTH));
        System.out.println(cld.get(Calendar.DAY_OF_MONTH));
        System.out.println(cld.get(Calendar.DAY_OF_WEEK));
        System.out.println(cld.get(Calendar.DAY_OF_YEAR));
        System.out.println(cld.get(Calendar.DATE));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值