• java基础笔记(3)


    捕获异常:

    try{

    ......

    }catch(Exception e){

    ......

    }finally{

    ......

    }

    注意:在写多重catch时需先小后大;

    自定义异常:

    String字符串常用方法:

    String str = "haha xixi pipi"

    int i = str.length;(i = 14);返回字符串str的长度;

    int j = str.indexOf("xixi");(j = 5);返回“xixi”在字符串str中的位置;

    String[] arr= str.split(" ");(arr = ["haha","xixi","pipi"]);以空格为分割符,将字符串str进行切割;

    String t = str.substring(5,9);(t = "xixi");返回位置为[5,9)之间的字串;

    String t1 = str.toLowerCase();将字符串转换为小写;

    str.charAt(1);返回索引位置为1的字符;

    byte[] b  = str.getBytes();将字符串转换为字节数组;

    注意:char用' ';String用" ";

    StringBuilder和StringBuffer类:设置一个内容可变的字符串对象,避免频繁地新创建字符串对象,产生很多的临时变量,StringBuffer比StringBuilder的不同之处是多了实现线程安全功能,因此StringBuilder的性能较高,平时使用也优先使用StringBuilder;

    StringBuilder类常用的方法:

    append(参数):追加内容到StringBuilder对象的末尾;

    insert(位置,参数):将内容插入对象的指定位置;

    toString():将StringBuilder对象转换为String对象;

    length():获取字符串长度;

    包装类:将基本数据类型包装成对象那样来操作;

    包装类提供的两大类方法分别是:提供本类和其他基本数据类进行转换;将字符串和本类及包装类进行相互转换;

    注:大部分的包装类名是基本数据类型的首字符变成大写,如byte-->Byte;而int的包装类是Integer,char的包装类是Character;

      

    拆箱装箱:基本数据类型转换为包装对象类即装箱,包装类转为基本数据类型即拆箱;都可手动或自动,自动拆装箱需要求基本数据类型和包装类是相对应的,如byte对应Byte;

    基本数据类型和字符串的转换:

    转为字符串:

    int c =10;

    1. String str1 = String.valueOf(c);
    2. String str2 = Integer.toString(c);
    3. String str3 = c + " " ;

    转为基本数据类型:

    String str = "ab"

    1. int a = integer.parseInt(str);
    2. int b = integer.valueOf(str);

    表示时间:常用两大类Date和SimpleDateFormat

    Date()返回当前时间,格式是

     显然与我们日常生活中的常见格式有所区别,为了将其转换,需用到SimpleDateFormat类,里面提供了个format()方法,将时间格式转换为指定格式;如:

    Date t = new Date();

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String date = sdf.format(t)

    此时的date字符串显示的就是我们刚指定的时间格式了;

    相反的,我们可以将文本格式字符串格式转换为Date类型,此时用到的的parse()方法;

    如:

    package com.lzj;
    import java.util.*;
    import java.text.*;
    public class test2 {
        public static void main(String[] args) {
        String day = "2018-11-04 10:30:20";
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try{Date date = df.parse(day);
        System.out.println(date);
        }catch(Exception e) {
        }
    }
    }

    运行结果:

    操作时间,Date类本身也带有操作时间的方法,不过并不是很推荐,推荐的是使用Calendar类来进行时间和日期的处理;

    Calendar类是java.util中的一个抽象类,通过getInstance()来获取Calendar对象,获取对象时本身就会初始化当前时间,并通过get()方法来获取信息值,如:

    Calendar c = Calendar.getInstance();

    int year = c.get(Calendar.YEAR);

    其中的Calendar.YEAR是类中定义的一个静态常量;

    除此之外,Calendar类还提供了另一些常用的方法:

    Date date = c.getTime();将时间从Calendar对象转换为Date对象;

    Long time = c.getTimeMillis();获取当前的毫秒数;

    Math类:

    Math类位于java.lang包中,是静态方法,因此可以直接通过类名调用方法,常用的方法有:

    double a = 12.885;

    1. long y1 = Math.round(a);返回四舍五入后的数值;
    2. double y2 = Math.floor(a);返回小于参数的最大整数;
    3. double y3 = Math.ceil(a);返回大于参数的最小整数;
    4. double y4 = Math.random();产生[0,1)之间的随机数字;

    java集合框架

     List接口与它的实现类:List的元素是可重复有序,可以精确控制每个元素的插入或删除;ArrayList是List的一个重要实现类;

    ArrayList实现类的常用方法add();可直接添加元素,也可指定位置添加元素:add(index,xxx);

    addall():直接增加一个数组List,如添加的数组类型不是List,则需通过Arrays.asList()来将其转换;如:

     同样的,它也可以通过指定参数index来选择插入的位置;

    size():返回大小;

    get(index):返回指定位置的元素;

    iterator():将集合转为迭代器,再通过迭代器Iterator自身的方法来操作集合,如通过迭代器遍历集合。例:

     set(index,xxx);把指定位置的元素改成xxx;

    remove();删除元素,可直接指定元素名,也可直接指定索引名,同样的removeAll()方法也可以删除一个数组的元素;跟addAll()方法类似;

    contains(xxx)/containsAll(xxx);判断集合是否包含xxx对象或xxx小集合,注意:就算对象的属性,方法都一样,但如果是不同对象,还是会返回false;

    如果想让其只要某个属性相等就返回true,则需要在对象中重写equals方法,因为contains()方法的本质就是通过equals方法对比每个对象是否相等;

    重写的模板如下参考:

     

     indexOf(xxx)方法;返回xxx对象的索引位置;如果有多个xxx对象,返回的是第一个出现的位置索引,如果没有,返回-1;

    泛型:规定了集合的类型以及其子类型对象,默认集合是可以增加各种类型数据的,编译时也不会报错,取出来的元素类型的Object类型,如果设定了泛型,则规定该集合只能存放规定类型的泛型,编译时存入不同的类型就会报错,取出来的也是规定的类型而不需有时还要进行强制转换;

    List<Course> coursesToSelect ;定义泛型时格式;

    this.coursesToSelect = new ArrayList<Course>();构造实例化List时格式;

    注意:泛型是不可以使用基本类型,需使用他们的包装类或者是自己自定义的类;

    set接口以及它的实现类HashSet;

    set接口及实现与List中的方法类似,但由于set是无序不重复的集合,因此和List集合相比其方法没有set()方法,遍历的时候只能通过迭代器或foreach,不能用get()方法,因为是无序的,所以是不能指定位置的;set可以添加一个空对象null;contains()方法中除了要重写equals()方法外,还需重写hashCode()方法,该方法会返回一个哈希码,Set接口的实现类HashSet其定义的contains()方法需要判断哈希码以及对象相等后,才会返回true,这一点要区别于List中的contains()方法;

    Map提供了一种映射,通过key-value的形式存储,可根据key快速查找value,key不可以重复,value可以,一个key只能映射一个value;

    Map是支持泛型,形式如:Map<K,V>;方法:

    put(key,value):增加对象;如果已有key值,则修改原有的value值;

    remove(key):如有包含指定key,则删除对应的值;

    keySet()、values()、entrySet():返回Map中key的集合、values值的集合以及键值对的集合;

    注意:entrySet返回的键值对类型要这样表示:Set<Map.Entry<K,Y>> xxx =?;

    HashMap类是Map接口的重要实现类,HashMap中的Entry对象的无序的,key和values都可以是null,但是只能有一个key是null(key值不能重复)

     containsKey();判断是否包含某个Key值

    containsValue();判断是否包含某个Value值;

    注意:同样的,这两个判断包含方法也要重写equals()方法和hashCode()方法,要不然只能判断是不是同一个对象;

    Collections类:定义了用来操作集合框架的方法;

    常用方法:

    sort(xxx);对xxx集合进行排序;注意:要实现排序,要确保集合里的对象实现了Comparable接口,其实现类需实现compareTo()方法,返回正数则表示大于比较对象,负数则小于,0则相等;而这个接口是定义默认的比较规则,因此可以比较;

    而当我们集合里的对象不是Intager这种类似基本数据类型的包装类,而是自定义的对象时,直接使用sort()方法是会报错的,因为没有实现Comparable接口;

    为了让我们自定义的对象可以使用sort()方法,我们可以将对象继承Comparable接口并重写compareTo()方法;通过传入一个对象,对比传入对象的某个属性和自身this对象的对应属性;

    Comparator接口:定义临时的比较规则类,;实现类的compare()方法里传入两个对象,用于比较;

    将定义好的Comparator实现类传入sort()方法中,并根据这个实现类定义的比较规则进行排序:

    如:studentList是储存了自定义Student对象的集合,StudentComparator是自定义Comparator类的实现类,里面必需包括compare()方法;

     注意:Comparable类和Comparator类都是带有泛型的;

    而无论是Collections类、Comparable类还是Comparator类,都是java集合框架中的类:

  • 相关阅读:
    Git Cannot rebase: You have unstaged changes.
    importError: DLL load failed when import matplotlib.pyplot as plt
    install tushare in python 3.6
    pd.qcut, pd.cut, df.groupby()等在分组和聚合方面的应用
    从池子里的beta看秋香, 个性迥异
    个股和股票池的beta系数的估算
    检验两个随机序列的beta系数
    spyder里的"查找文件里的特定字符串"非常方便
    地图上道路编号中的G S X Y
    场内的代码表, 感觉水很深
  • 原文地址:https://www.cnblogs.com/lzj-learn/p/11793722.html
Copyright © 2020-2023  润新知