Java学习总结6

1.Character

        Character类是基本数据类型char类型的包装类类型,包含char的值
        此外,该类还提供了几种方法来确定字符的类别(小写字母,数字等),并将字符从大写转换为小写,反之亦然.
        构造方法:
                Character(char value) 参数里面也可以为int----char :将一个字符内容构造成包装类类型
        成员方法:
            判断功能:
                public static boolean isDigit(char ch):判断当前ch字符是否为数字
                public static boolean isLowerCase(char ch):判断当前ch字符是否为小写字母字符
                public static boolean isUpperCase(char ch)确定指定的字符是否为大写字符。

public class CharacterDemo {
    public static void main(String[] args) {

        //创建一个Character类对象
        //Character character  = new Character((char)97) ;
        Character character = new Character('a') ;
        System.out.println(character); //'a'


        System.out.println("----------------------------------------") ;

        //测试判断功能
        System.out.println("isDigit():"+Character.isDigit('A')) ;
        System.out.println("isDigit():"+Character.isDigit('0')) ;
        System.out.println("isDigit():"+Character.isDigit('a')) ;
        System.out.println("----------------------------------------") ;
        System.out.println("isLowerCase():"+Character.isLowerCase('A')) ;
        System.out.println("isLowerCase():"+Character.isLowerCase('0')) ;
        System.out.println("isLowerCase():"+Character.isLowerCase('a')) ;
        System.out.println("----------------------------------------") ;
        System.out.println("isUpperCase():"+Character.isUpperCase('A')) ;
        System.out.println("isUpperCase():"+Character.isUpperCase('0')) ;
        System.out.println("isUpperCase:"+Character.isUpperCase('a')) ;
    }
}

2.Date

java.util.Date:表示日期格式:精确到瞬间毫秒
        构造方法:
                public Date():无参构造方法,获取当前系统时间的日期格式  默认使用当前系统时间
                public Date(long date):将long类型-构造成Date对象:long指定时间毫秒值(与1970年1月1日)
        成员方法:
                public long getTime():将Date日期格式----转换成long类型返回自1970年1月1日以来的Date毫秒数

public class DateDemo {
    public static void main(String[] args) {

        //public Date():无参构造方法,获取当前系统时间的日期格式
        Date date = new Date() ;
       // long times = date.getTime();
        //System.out.println(times);

        System.out.println(date);

        System.out.println("---------------------------------------") ;
        long time = 60 * 60 ;
        Date date2 = new Date(time) ;
        System.out.println(date2);
    }
}

        String 日期文本格式如何和Date格式之间转换
        DateFormat是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间。但是它是一个抽象类,抽象类不能实例化,它提供了更具体的子类SimpleDateFormat进行操作.

 java.util.Date对象------  SimpleDateFormat     ------->String 日期文本格式
        public SimpleDateFormat(String pattern):参数为描述日期和时间格式的一种模式

String--------------SimpleDateFormat------------------>Date
        public Date parse(String source) throws ParseException:解析方法,可能出现解析异常,当前字符串开头不能解析就出问题

public class DateDemo2 {
    public static void main(String[] args) throws ParseException {

        //Date---->String 日期文本
        //创建日期对象:表示当前系统时间
        Date date = new Date() ;

        //创建SimpleDateFormat对象:中间桥梁(格式化/解析 工具)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
        //  public final String format(Date date)
        String dateStr = sdf.format(date);
        System.out.println(dateStr) ;


        System.out.println("------------------------------------------") ;

        //String文本------->Date日期格式
        String sourc = "2012-12-20" ;
        //当前的SimpleDateFormat的模式必须和字符串文本格式对应!,否则解析出问题了
        //创建SimpleDateFormat对象
       // SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日" ) ;
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd" ) ;
        //public Date parse(String source) throws ParseException:
        Date date2 = sdf2.parse(sourc);
        System.out.println(date2) ;
    }
}

3.Calendar

 java.util.Calendar:抽象类
表示的特定一组时间:诸如YEAR,MONTH,DAY_OF_MONTH 等等
        静态功能:
                public static Calendar getInstance()
        成员变量---- 常量
                public static final int YEAR :年
                public static final int MONTH:月:角标是从0开始计算, 计算出来+1
                public static final int DATE:月中的日期 和DAY_OF_MONTH同义词
                时分秒:查看API
        成员方法:
                public int get(int field):获取当前的日历字段
                public abstract void add(int field,int amount):设置时间偏移量,针对当前日历字段,减去或者添加指定amount(偏移量)

public class CalendarDemo {
    public static void main(String[] args) {

        //创建日历类对象
        Calendar calendar = Calendar.getInstance();
       // System.out.println(calendar); //很多信息: 需要的是年月日

        //获取年
        //public int get(int field):获取当前的日历字段
        int year = calendar.get(Calendar.YEAR) ;
        int month = calendar.get(Calendar.MONTH) ;
        int date = calendar.get(Calendar.DATE) ;

        System.out.println("当前系统时间日期是:"+year+"年"+(month+1)+"月"+date+"日");

        System.out.println("--------------------------------------------------------") ;

        //5年前的今天
        //给年字段设置偏移量
       /* calendar.add(Calendar.YEAR,-5) ;
        year = calendar.get(calendar.YEAR) ;
        System.out.println("当前系统时间日期是:"+year+"年"+(month+1)+"月"+date+"日");*/

       //5年后的10天前
        calendar.add(Calendar.YEAR,5) ;
        year = calendar.get(calendar.YEAR) ;
        //设置天
        calendar.add(Calendar.DATE,-10) ;
        date = calendar.get(Calendar.DATE) ;
        System.out.println("当前系统时间日期是:"+year+"年"+(month+1)+"月"+date+"日");


        System.out.println("-----------------------------------------------") ;
       // public final void set(int year, int month, int date)设置指定的日历字段

        calendar.set(2022,11,18) ;
        year = calendar.get(Calendar.YEAR) ;
        month = calendar.get(Calendar.MONTH) ;
        date = calendar.get(Calendar.DATE) ;
        System.out.println("设置的日历字段时:"+year+"年"+(month+1)+"月"+date+"日");

    }
}

4.System

System类不能实例化,里面提供一些标准输入流
        静态字段(常量)
                public static final  InputSteam in ;
                public static final  PrintStream out ;
        静态功能:
                public static void gc():手动开启垃圾回收器
                public static void exit(int status):参数为0,正常终止JVM
                public static void arraycopy(Object src,int srcPos,Object dest,int destPos, int length):复制数组
                public static long currentTimeMillis():计算当前系统时间毫秒值

public class SystemDemo {
    public static void main(String[] args) {

      //  System.err.println("错误日志输出..");
        //字节输入流
        InputStream in = System.in;

        Scanner sc = new Scanner(in) ;

        System.out.println("请输入一个数据int:");
        int a = sc.nextInt() ;
        System.out.println(a) ;

        System.out.println("--------------------------------") ;

        //字节打印流(输出流一种):字节输出流 OutputStream 父类
        PrintStream ps = System.out ;
        ps.println("helloworld"); //打印内容并换行
        ps.println("javaee");
    }
}

        public static void exit(int status)//:参数为0,正常终止JVM
                场景:
                当前while循环和switch语句一块使用
                break,结束switch语句,使用while(true),
                当某个条件满足,结束, System.exit(0) ;
        public static long currentTimeMillis()//:计算当前系统时间毫秒值
        很少单独使用,在看程序的执行效率问题(计算时间差值) ;
        io流使用字节流和字符流:分别进行文件读写复制,计算执行效率!
                字节流: 读取图片文件,文本文件.音频文件/视频文件
                字符流: 读文本文件效率高于字节流
        public static void arraycopy(Object src,int srcPos,Object dest,int destPos, int length)

public class SystemDemo3 {
    public static void main(String[] args) {

       /* System.out.println("hello,程序开始了...") ;
        System.exit(0) ;
        System.out.println("程序结束了,Over...");*/
       long start = System.currentTimeMillis() ;

       for(int x = 0 ; x < 10000 ; x ++){
           System.out.println("hello"+x);
       }
       long end = System.currentTimeMillis() ;

       //计算时间差值
        System.out.println("当前程序共耗时"+(end-start)+"毫秒") ;

        System.out.println("---------------------------------------------") ;

        //创建两个数组
        int[] arr = {1,2,3,4,5,5,6,7,8} ;
        int[] arr2 = {11,22,33,44,55,66} ;

        //复制之前:
        //将数组----String :Arrays工具类的toString(数据类型[] 数组名称)
        System.out.println("复制之前: ");
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr2));
        System.out.println("-------------------------------") ;

        //public static void arraycopy(Object src,int srcPos,Object dest,int destPos, int length)//复制数组
        //参数1:原数组对象
        //参数2:原数组中的某个位置
        //参数3:目标数组对象
        //参数4:目标数组对象的某个位置
        //参数5:指定长度进行赋值
        System.arraycopy(arr,2,arr2,2,3);
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr2));


    }
}

5.Random

伪随机数生成器
        构造方法
                Random():创建随机数生成器,通过它调用功能获取的随机是不同的   (使用无参构造居多)
                Random(long seed):创建随机数生成器,通过它调用功能,产生随机数值相同的
        成员方法:
                public int nextInt():获取随机数int类型范围
                public int nextInt(int n):获取0-n之间随机数,不包括n

public class RandomDemo {
    public static void main(String[] args) {
        //创建随机数生成器
        //Random random = new Random(111) ;
        //空参构造
        Random random = new Random() ;

        //for循环:产生10个随机
        for(int x = 0 ;  x < 10 ; x ++){
            //int num = random.nextInt();//取值范围:int类型范围
           // System.out.println(num);
            int num = random.nextInt(30) ;
            System.out.println(num) ;
        }
    }
}

6.Math

java.lang.Math: 数学的运算工具类
        功能都是静态
                public static double abs(double/int a):求绝对值
                public static double ceil(double a):向上取整
                public static double floor(double a):向下取整
                public static double max(double a,double b):获取最大值
                public static double min(double a,double b):获取最小值
                public static double random():[0,1) :获取0,1随机数,不包含1
                public static long round(double a):四舍五入
                public static double sqrt(double a):开正方根
                public static double pow(double a,double b):a的b次幂

public class MathDemo {
    public static void main(String[] args) {
       // System.out.println(abs(-100));
        System.out.println(java.lang.Math.abs(-100));
        //当前自定义的方法名如果和静态导入的方法名冲突,只能使用指定的包名.类名.方法名使用!
        abs(20.0);
        System.out.println(ceil(12.56));
        System.out.println(Math.floor(11.34));
        System.out.println(Math.max(10,50));
        System.out.println(Math.min(10,50));
        System.out.println(Math.random()) ;
        System.out.println(Math.round(12.78)) ;
        System.out.println(Math.pow(2,3));
        System.out.println(Math.sqrt(9));
    }

    //自定义了一个功能abs
    public static void abs(double ...a){ //a变量名:未知多少个参数
        System.out.println(a) ;
    }
}

7.BigDecimal

对小数进行精确计算
 public BigDecimal(String val) :将数字字符构造成BigDecimal对象
        功能
                public BigDecimal add(BigDecimal augend)求和
                public BigDecimal subtract(BigDecimal subtrahend)相减
                public BigDecimal multiply(BigDecimal multiplicand):乘
                public BigDecimal divide(BigDecimal divisor)除
                        除的时候,还可以保留小数的精确位数
                public BigDecimal divide(BigDecimal divisor,int scale, RoundingMode roundingMode)
                        参数1:指定的除数
                        参数2:保留的有效位数
                        参数3:指定舍入模式: ROUND_HALF_UP 四舍五入

public class BigDecimalDemo {
    public static void main(String[] args) {

       // System.out.println(1.01/2.35);
        //System.out.println(1.01- 0.336);

        BigDecimal bg1 = new BigDecimal("1.01") ;
        BigDecimal bg2= new BigDecimal("10.0") ;
        System.out.println(bg1.divide(bg2));
        System.out.println(bg1.add(bg2));
        System.out.println(bg1.multiply(bg2));
        System.out.println(bg1.subtract(bg2));

        System.out.println("---------------------------------") ;
        System.out.println(bg1.divide(bg2,2,BigDecimal.ROUND_HALF_UP));

    }
}

8.选择排序

        思想:使用0角标对应的元素依次和后面角标对应的元素进行比较,小的往前放,第一次比较完毕,最小值出现在最小索引处,依次比较,比较的次数:数组长度-1次

public class ArrayDemo {

    public static void main(String[] args) {
        //给定一个数组
        int[] arr = {24, 68, 87, 57, 13};

        System.out.println("排序前:");

        //自己的功能
        printArray(arr);
        selectSort(arr); //排序
        printArray(arr);
    }

    private static void selectSort(int[] arr) {
        for (int x = 0; x < arr.length - 1; x++) {//比较次数
            for (int y = x + 1; y < arr.length; y++) {//遍历后面的元素
                //判断
                if (arr[y] < arr[x]) {
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
    }

    public static void printArray(int[] arr){
        System.out.print("[") ;
        for(int x = 0 ; x < arr.length ; x++){
            if(x == arr.length-1){
                System.out.println(arr[x] +"]") ;
            }else{
                System.out.print(arr[x]+", ");
            }
        }
    }
}

9.集合

集合和数组的区别
        1)长度的区别
                数组长度:固定
                集合长度:可变
        2)存储数据类型的区别
                数组:既可以存储基本数据类型,而且存储引用数据类型
                int[] arr = new int[5] ;
                Student[] students=  new Student[3] ;
                集合:只能存储引用数据类型
        3)存储元素的区别:
                数组:虽然以存储基本数据类型,而且存储引用数据类型,元素类型必须统一
                String[] strArray = {"hello","world","JavaEE",100} ;不行,报错
                集合:虽然只能存储引用数据类型,但是可以存储任何引用类型, 没有泛型<>:模拟数组的特点.

9.1 collection集合

某些集合允许重复元素(List),而其他集合不允许(Set). 有些有序和有序无序.
        Collection的基本功能:
                boolean add(Object e):添加任意类型
                boolean remove(Object o):删除指定的元素
                void clear():暴力删除,将集合中所有元素删除
                boolean contains(Object o):判断集合中是否包含指定的元素
                boolean isEmpty():判断是否为空,不为空,false;空,true
                int size():获取集合的元素数

public class CollectionDemo {
    public static void main(String[] args) {

        //创建Collection集合对象:接口多态
        Collection  c = new ArrayList() ;
        System.out.println(c) ;
        //boolean add(Object e):添加任意类型
        //System.out.println(c.add("hello"));
        //单独调用
        c.add("hello") ;
        c.add("JavaEE") ;
       // c.add(100) ;//int---Integer
        //c.add(new Object()) ;
        c.add("world") ;
        System.out.println(c) ;

        //boolean remove(Object o):删除指定的元素
        System.out.println(c.remove("hello"));
        System.out.println(c) ;

        //   void clear():暴力删除,将集合中所有元素删除
      //  c.clear();

        // boolean contains(Object o):判断集合中是否包含指定的元素
        System.out.println(c.contains("android")) ;
        System.out.println(c.contains("world")) ;
        //boolean isEmpty():判断是否为空,不为空,false;空,true
        System.out.println(c.isEmpty());
        //int size():获取集合的元素数
        System.out.println(c.size());
        System.out.println(c);

    }
}

9.2 Iterator迭代器

9.3 泛型

集合对象的创建同时明确数据类型,并且将运行时期异常提前到了编译时期(模拟数组定义)
写法:<引用数据类型>
作用:就是将集合的对象的创建工作,将运行时期异常,提前到编译时期,解决程序安全性.
        创建集合对象:
                集合<数据类型>  对象名 = new 子实现类<>()
泛型的好处:
                1)提高程序安全性
                2)解决黄色警告线
                3)使用集合的迭代器避免强转类型强转类型转换

public class CollectionDemo2 {
    public static void main(String[] args) {
      // String[] str = {"hello","world","javaee",100} ;

        //创建一个Collection集合
        Collection c = new ArrayList() ;
        //添加5个字符串
        c.add("hello") ;
        c.add("world") ;
        c.add("JavaEE") ;
        c.add("android") ;
        c.add("Php") ;

        //System.out.println(c);

        //将集合转换成对象数组
        Object[] objs = c.toArray(); //向上转型:Object obj = new String() ;
        for(int x = 0 ; x < objs.length ; x ++){
            //System.out.println(objs[x]) ;
            //使用Collection存储5个字符串数数据,并进行遍历,并且输出字符串长度 length()
            //向下转型:
            String s = (String) objs[x];
            System.out.println(s+"----"+s.length());

        }

        System.out.println("---------------------------------------------------------") ;
        //使用集合存储5个学生,并且输出学生信息(姓名,年龄)
        //加入泛型:就这样一个个数
        Collection<Student> c1 = new ArrayList<>() ;

        //创建5个学生
        Student s1 = new Student("张三",23) ;
        Student s2 = new Student("赵四",25) ;
        Student s3 = new Student("李华",18) ;
        Student s4 = new Student("刘敏",28) ;
        Student s5 = new Student("张三丰",20) ;

        c1.add(s1) ;
        c1.add(s2) ;
        c1.add(s3) ;
        c1.add(s4) ;
        c1.add(s5) ;
        ///将集合转换对象数组
        Object[] objects = c1.toArray();//c1:Student元素  Object obj = new  Student() ;
        for(int x = 0 ; x < objects.length ; x ++){
           // System.out.println(objects[x]) ;

            //通过Student的getXXX()获取信息
            //向下转型
            Student s = (Student) objects[x];
            System.out.println(s.getName()+"----"+s.getAge());
        }
    }
}

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

    public Student() {
    }

    public Student(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;
    }

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

9.3 Collection集合的高级功能

        boolean addAll(Collection c):添加一个集合中的所有元素
        boolean containsAll(Collection c):包含一个集合的所有元素 (思考:包含一个算包含,还是所有元素)        包含所有算包含
        boolean removeAll(Collection c):删除一个算删除还是删除所有算删除?    结论:删除一个集合中包含另一个集合中的某个元素,就算删除,返回true

public class CollectionDemo {

    public static void main(String[] args) {

        //创建两个集合
        Collection c1 = new ArrayList() ;
        c1.add("abc1") ;
        c1.add("abc2") ;
        c1.add("abc3") ;
        c1.add("abc4") ;
        c1.add("abc5") ;
        c1.add("abc6") ;
        c1.add("abc7") ;


        Collection c2 = new ArrayList() ;

//        c2.add("abc1") ;
//        c2.add("abc2") ;
//        c2.add("abc3") ;
//        c2.add("abc4") ;
        c2.add("abc5") ;
        c2.add("abc6") ;
        c2.add("abc7") ;
        System.out.println("c1:"+c1) ;
        System.out.println("c2:"+c2) ;
        System.out.println("--------------------------------------") ;

        //boolean addAll(Collection c):添加一个集合中的所有元素
        //System.out.println("addAll():"+c1.addAll(c2));
        //boolean containsAll(Collection c):包含一个集合的所有元素 (思考:包含一个算包含,还是所有元素) 包含所有
        //System.out.println(c1.containsAll(c2));

        //boolean removeAll(Collection c):删除一个算删除还是删除所有算删除?
//        System.out.println(c1.removeAll(c2));

        //boolean retainAll(Collection c): 求集合中的交集元素,boolean的表达式意思是什么?
        //A集合对B集合求交集,boolean 什么情况true/什么情况下false
        System.out.println(c1.retainAll(c2)) ;

        System.out.println("c1:"+c1) ;
        System.out.println("c2:"+c2) ;


    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值