捕获异常:

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集合框架中的类:

java基础笔记(3)的更多相关文章

  1. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  2. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  3. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  4. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  5. Java基础笔记1

    java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...

  6. Java基础笔记(一)——JDK、JRE、JVM

    JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...

  7. Java基础笔记05-06-07-08

    五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...

  8. Java基础笔记-抽象,继承,多态

    抽象类: abstract修饰 抽象方法必须定义在抽象类中,抽象类不能创建对象. 在抽象方法中可以不定义抽象方法,作用是:让该类不能建立对象. 特点是: 1.定义在抽象类中 2.方法和类都用abstr ...

  9. Java基础笔记(一)

    本文主要是我在看<疯狂Java讲义>时的读书笔记,阅读的比较仓促,就用 markdown 写了个概要. 第一章 Java概述 Java SE:(Java Platform, Standar ...

  10. JAVA基础笔记10-11-12-13-14

    十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...

随机推荐

  1. 【NOIP2016提高A组模拟8.17】(雅礼联考day1)Matrix

    题目 分析 假设,我们从\(F_{i,2}\)出发,那么对\(F_{n,n}\)的贡献就是\(某个系数乘以a^{n-i}b^{n-1}r_i\): 同理,如果从\(F_{2,i}\)出发,那么对\(F ...

  2. 【leetcode】1185. Day of the Week

    题目如下: Given a date, return the corresponding day of the week for that date. The input is given as th ...

  3. 【leetcode】Heaters

    Winter is coming! Your first job during the contest is to design a standard heater with fixed warm r ...

  4. CDOJ 203 并查集+优先队列 好题

    题目链接 Islands Time Limit: 30000/10000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) S ...

  5. csp-s2019 AFO记

    DAY 0 上午出发前大家都很颓废的样子. 我因为还没有实现刷完NOIP专题的所有题的目标而去憨比的学DDP. 最后还是不会,保卫王国是写不成了…… 该走了,学校领导来开了个欢送会,祝福我们从里WA到 ...

  6. [nginx] CORS配置多域名

    如下 server { listen 80; server_name www.your.com; root /data/web/www.your.com; access_log /var/log/ng ...

  7. ES6数组内对象去重

    这个数组去重转自https://www.cnblogs.com/caideyipi/p/7679681.html, 就当笔记记录: 去重Set const arr = ['张三','张三','三张三' ...

  8. GTX 1060 3GB 能否使用DeepFaceLab ?

    大部分人都知道跑换脸软件对电脑配置的要求比较高.所以当你想要开始玩之前都会有一个疑问:我的电脑能跑起来了么?或者我的电脑能跑那个模型? 之前写过一篇750 1G显卡如何玩deepfakes的文章.今天 ...

  9. python3 以utf-8编码写文件

    原来的 save = open('1.txt', 'w', 'utf8') 用下面的 save = codecs.open('1.txt', 'w', 'utf8')

  10. 配置Log4j(很详细)【转】

    来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记 ...