java几个类的简单使用

Wesley13
• 阅读 663

##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("数值类型的字符串")

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
java泛型总结
1.特点,好处java1.5后出现包含1.5版本泛型的出现解决程序的安全性保证程序的一致安全机制使用泛型避免了类型的强制类型转换代码就简单数据类型只能是应用类型不能使基本类型,且前后保持一致泛型的定义格式:集合类<数据类型变量new集合类<数据类型();2.定义使用
Easter79 Easter79
2年前
Thinking in java Chapter15 泛型
1与C比较2简单泛型泛型类3泛型接口4泛型方法5匿名内部类6构建复杂模型78910“泛型”意思就是:适用于许多许多的类型<h2id"1"1与C比较</h2C
Stella981 Stella981
2年前
20175209 《Java程序设计》第八周学习总结
20175209《Java程序设计》第八周学习总结一、教材知识点总结1.泛型1.泛型类声明:格式classPeople<EPeople是泛型类名称E是泛型列表,可以是任何对象或接口,但不能是基本类型数据
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
可莉 可莉
2年前
20175209 《Java程序设计》第八周学习总结
20175209《Java程序设计》第八周学习总结一、教材知识点总结1.泛型1.泛型类声明:格式classPeople<EPeople是泛型类名称E是泛型列表,可以是任何对象或接口,但不能是基本类型数据
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这