java几个类的简单使用

Random

Random类用来创建一个新的随机数生成器。


对象数组

ArrayList集合的长度是可以随意改变的。
ArrayList
这个 代表泛型
泛型:装在集合当中的所有元素,全部都是统一的类型。泛型只能是引用类型,不能使用基本元素。

import java.util.ArrayList;

public class ArrayListExercise {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("盖伦");
        list.add("锐雯");
        list.add("亚索");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

boolean add(E e)
E get(int index)
E remove(int index)
int size()

ArrayList集合中存储基本数据类型时,必须使用基本数据类型对应的包装类。

基本类型 包装类
byte Byte
short Short
int Integer
long Long
double Double
char Character
boolean Boolean

字符串

Java程序中的所有的字符串字面值(“ABC”)都作为此类的实例实现。

字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组。


字符串的构造方法和直接创建

public class StringExercise {
    public static void main(String[] args) {
        //使用空参构造
        String string1 = new String();
        System.out.println(string1);
        //使用字符数组构造
        char[] chars = {'A','B','C'};
        String string2 = new String(chars);
        System.out.println(string2);
        //使用字节数组构造
        byte[] bytes = {97,98,99};
        String string3 = new String(bytes);
        System.out.println(string3);
        //直接创建
        String string4 = "hello";
        System.out.println(string4);
    }
}

字符串常量池

程序当中直接写上的双引号字符串,就在字符串常量池中。


倒叙遍历

import java.util.Arrays;

public class ArraysExercise {
    public static void main(String[] args) {
        String string = "abdsdafawaswa";
        char[] chars = string.toCharArray();
        Arrays.sort(chars);
        //chars.fori快捷
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
        //chars.forr快捷
        for (int i = chars.length - 1; i >= 0; i--) {
            System.out.println(chars[i]);
        }
    }
}

改写Object类中的toString和equals方法

import java.util.Objects;

public class Person {
    private String name;
    private int age;

    @Override
    public String toString() {
        //对toString方法进行重写,使可以输出自己想要输出的内容,而不再输出对应对象的地址
        return "Person{" + "name:" + name + ",age:" + age + "}";
    }
    /*
    Object类的equals方法,默认比较的是两个对象的地址值,没有意义
    可以进行重写,比较的内容自己设置
    问题:
        1、隐含一个多态
        2、多态的弊端:无法使用子类特有的内容(属性和方法)
        解决:可以使用向下转型把obj类型转换为自己定义的类型
     */
//    @Override
////    public boolean equals(Object obj) {
////        if(obj == this){
////            return true;
////        }
////        if(obj == null){
////            return false;
////        }
////        //向下转型
////        if(obj instanceof Person){
////            Person person = (Person)obj;
////            //比较两个对象的属性,一个为this,一个为转换的对象。
////            return this.name.equals(person.name) && this.age == person.age;
////        }
////        return false;//不是对应的类型,直接返回false
////    }

    @Override
    public boolean equals(Object o){
        if(this == o) return true;
        //getClass() != o.getClass()使用反射技术,判断o是否是Person类型,
        //等效于obj instanceof Person
        if(o == null || getClass() != o.getClass()) return false;
        Person person = (Person)o;
        return age == person.age && Objects.equals(name,person.name);
        //Objects.equals()方法会放在空指针异常(null)
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
public class ObjExercise {
    public static void main(String[] args) {
        Person person1 = new Person("sunwu",20);
        Person person2 = new Person("huayue",22);
        System.out.println(person1);
        System.out.println(person2);
        boolean bool = person1.equals(person2);
        System.out.println(bool);

    }
}

Data类

import java.util.Date;

public class DateExercise {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());
        demoOne();
        demoTwo();
        demeThree();
    }
    private static void demeThree() {
        Date data = new Date();
        System.out.println(data.getTime());
    }
    public static void demoOne(){
        Date date = new Date();
        System.out.println(date);
    }
    public static void demoTwo(){
        Date date = new Date(1583560500337L);
        System.out.println(date);
    }
}

DateFormat(抽象类)

格式化(日期-->文本)、解析(文本-->日期)

SimpleDateFormat类

构造方法:
SimpleDateFormat(String pattern)用给定的模式和默认环境的日期格式符号构造SimpleDateFormat

参数pattern:传递指定的模式
y年M月d日H时m分s秒
写对应的模式,会把模式替换为对应的日期和时间
"yyyy--MM-dd HH:mm:ss",连接发符号可以改变

format(Date date)按照指定的模式,吧Date日期格式化为符号模式的字符串
parse(String source)把符号模式的字符串解析为date日期

parse声明了一个异常parseException,如果字符串和构造方法的模式不一样,那么程序就会抛出异常。这里采用不处理只声明异常的方法 throws ParseException

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

public class SimpleDateFormatExercise {
    public static void main(String[] args) throws ParseException {
        //demoOne();
        demoTwo();
    }

    private static void demoTwo() throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy--MM--dd  HH:mm:ss" );
        Date date = simpleDateFormat.parse("2020--03--07  23:07:52");
        System.out.println(date);
        //如果解析的字符串与格式不一样,就会抛出异常。
    }
    private static void demoOne(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy--MM--dd  HH:mm:ss" );
        Date date = new Date();
        String dateFormat = simpleDateFormat.format(date);
        System.out.println(date);
        System.out.println(dateFormat);
    }
}

Calendar类:日历类(是一个抽象类),里面有很多操作日历字段的方法
Calendar类无法直接创建对象,里面有一个静态方法叫getInstance(),该方法返回了Calendarr类的子类对象。

常用的成员方法

1、 pubilc int get(int field):返回给定日历字段的值
2、 pubilc void set(int field ,int value):将给定的日历字段设置为给定值
3、 public abstract void add(int field, int amout):根据日历的规则,为给定的日历字段添加或减去指定的时间量
4、 pubilc Date getTime():返回一个表示此Calendar时间值的Date对象

int field:日历类的字段,可以使用Calendar类的静态变量获取
YEAR = 1 年
MONTH = 2 月
DATE = 5 日
DAY_OF_MONTH = 5 月中的某一天
HOUR = 10 时
MINUTE = 12 分
SECOND = 13 秒

Calendar calendar = Calendar.getInstance();//多态(重点关注)

import java.util.Calendar;
import java.util.Date;

public class CalendarExercise {
    public static void main(String[] args) {
        //Calendar calendar = Calendar.getInstance();//多态
        //System.out.println(calendar);//从写toString方法
        //demoOne();
        //demoTwo();
        demoThree();
        //demoFour();
    }

    private static void demoFour() {
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        System.out.println(date);
    }

    private static void demoThree() {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.YEAR,2);  // 正为加,负为减
        calendar.add(Calendar.MONTH,-3);
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH));

    }

    private static void demoTwo() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR,9999);  // 设置日期
        //calendar.set(888,88,88);
        System.out.println(calendar.get(Calendar.YEAR));
    }

    private static void demoOne() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);
        int month = calendar.get(Calendar.MONTH);//西方是0-11
        System.out.println(month);
        int dateOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(dateOfMonth);
    }
}

System.CurrentTimeMillis()方法

public class CurrentTimeMillisExercise {
    public static void main(String[] args) {
        demoOne();
    }

    private static void demoOne() {
        long start = System.currentTimeMillis();  //获取毫秒值
        for (int i = 0; i <9999; i++) {
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("\n程序运行时间:" + (end-start) + "毫秒");
    }
}

System.arraycopy(……)

System.arraycopy(object src,int srcPos,object dest,intdestPos,int length):将数组中指定的数据拷贝到另一个数组

src:原数组
srcPos:原数组中的起始位置(索引)
dest:目标数组
destPos:目标数组中的起始位置
length:要复制的长度

import java.util.Arrays;

public class ArrayCopyExercise {
    public static void main(String[] args) {
        demo();
    }

    private static void demo() {
        int[] src = {1,2,3,4,5};
        int dest[] = {6,7,8,9,10};
        System.out.println("复制前:" + Arrays.toString(dest));
        System.arraycopy(src,0,dest,2,3); //从原数组(目标数组)要复制(被复制)的索引开始 + length  <=src.length()/dest.length()
        System.out.println("复制后:" + Arrays.toString(dest));
    }
}

Stingbuilder

字符串缓冲区支持可变的字符串。

public class StringBuilderExercise {
    public static void main(String[] args) {
        demoOne();
        demoTwo();
        demoThree();
        demoFour();
    }

    private static void demoFour() {
        String string = "hello";
        StringBuilder stringBuilder = new StringBuilder(string);
        stringBuilder.append("world");
        System.out.println(stringBuilder);
        final String string1 = stringBuilder.toString();
        System.out.println(string1);
    }

    private static void demoThree() {
        StringBuilder stringBuilderOne = new StringBuilder();
        stringBuilderOne.append("hello").append(123456789);  // 链式编程
        System.out.println(stringBuilderOne);
    }

    private static void demoTwo() {
        //带参构造
        StringBuilder stringBuilder = new StringBuilder("hello");
        System.out.println(stringBuilder);
    }

    private static void demoOne() {
        //空参构造方法
        StringBuilder stringBuilder = new StringBuilder();
        System.out.println(stringBuilder);
    }
}

装箱和拆箱

装箱:基本数据类型-->包装类
拆箱:包装类-->基本数据类型

可以使用构造方法或者使用valueOf方法进行装箱(对字符串类型的数和基本数据类型)。

可以进行自动装箱和自动拆箱

基本数据类型和字符串类型之间相互转换

1、基本数据类型的值 + "" (最简单)
2、包装类的静态方法toString(参数), 和object是重载关系
3、String类的静态方法valueOf(参数),将基本数据类型进行转换

1、使用包装类的静态方法parsexxx("数值类型的字符串")

猜你喜欢

转载自www.cnblogs.com/saonian450/p/12443476.html