捕获异常:

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. [每日一讲] Python系列:列表与元组

    参考文档 https://docs.python.org/zh-cn/3.7/tutorial/introduction.html#lists """ DATA STRU ...

  2. 对ECMAScript的研究-----------引用

    ECMAScript 新特性与标准提案 一:ES 模块 第一个要介绍的 ES 模块,由于历史上 JavaScript 没有提供模块系统,在远古时期我们常用多个 script 标签将代码进行人工隔离.但 ...

  3. 对MySQL binlog日志解析,统计每张表的DML次数

    想要获取每天数据库每张表的DML的次数,统计热度表,可以使用该脚本 # coding:utf-8 # 解析binlog,统计热度表,表的DML个数 import sys import os # mys ...

  4. .NET面试题系列(二十)XX

    遍历树.实现造成锁的代码.在线音乐网站 抽象工厂和工厂的区别 简单工厂 : 用来生产同一等级结构中的任意产品.(对于增加新的产品,无能为力) 工厂方法 :用来生产同一等级结构中的固定产品.(支持增加任 ...

  5. 【javascript】生成二维码

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 < ...

  6. Devexpress MVC GridView / CardView (持续更新)

    //获取gridview里面的combo box 显示的文本 //获取某个column在gridview的 index RightGridView.GetColumnByField("Fun ...

  7. (77)一文了解Redis

    为什么我们做分布式使用Redis? 绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知.这里对  ...

  8. JAVA第二周课程总结

    本周我们开始学习一门新的课程JAVA 本周主要学习内容: 1.认识java,以及它的开发工具jdk 2.了解Java的语言特点 3.搭建Java开发环境,jdk的安装和配置

  9. 无法加载程序集XXX.dll 此程序集可能是从 Web 上下载的

    错误    13    无法加载程序集 file:///D:\Documents\Downloads\kaxaml-master\kaxaml-master\packages\Prism.4.0.0. ...

  10. VASP学习笔记--简单的VASP运行实例:CrI3做非磁的优化

    一.总体思路 1)写入INCAR: 2)写入POSCAR,就是坐标文件: 3)写入KPOINTS文件,就是K点的选择: 4)写入POTCAR,写入POTCAR(找到势文件,然后按照POSCAR中的元素 ...