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;
- String str1 = String.valueOf(c);
- String str2 = Integer.toString(c);
- String str3 = c + " " ;
转为基本数据类型:
String str = "ab"
- int a = integer.parseInt(str);
- 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;
- long y1 = Math.round(a);返回四舍五入后的数值;
- double y2 = Math.floor(a);返回小于参数的最大整数;
- double y3 = Math.ceil(a);返回大于参数的最小整数;
- 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)的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java基础笔记1
java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...
- Java基础笔记(一)——JDK、JRE、JVM
JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...
- Java基础笔记05-06-07-08
五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...
- Java基础笔记-抽象,继承,多态
抽象类: abstract修饰 抽象方法必须定义在抽象类中,抽象类不能创建对象. 在抽象方法中可以不定义抽象方法,作用是:让该类不能建立对象. 特点是: 1.定义在抽象类中 2.方法和类都用abstr ...
- Java基础笔记(一)
本文主要是我在看<疯狂Java讲义>时的读书笔记,阅读的比较仓促,就用 markdown 写了个概要. 第一章 Java概述 Java SE:(Java Platform, Standar ...
- JAVA基础笔记10-11-12-13-14
十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...
随机推荐
- [每日一讲] Python系列:列表与元组
参考文档 https://docs.python.org/zh-cn/3.7/tutorial/introduction.html#lists """ DATA STRU ...
- 对ECMAScript的研究-----------引用
ECMAScript 新特性与标准提案 一:ES 模块 第一个要介绍的 ES 模块,由于历史上 JavaScript 没有提供模块系统,在远古时期我们常用多个 script 标签将代码进行人工隔离.但 ...
- 对MySQL binlog日志解析,统计每张表的DML次数
想要获取每天数据库每张表的DML的次数,统计热度表,可以使用该脚本 # coding:utf-8 # 解析binlog,统计热度表,表的DML个数 import sys import os # mys ...
- .NET面试题系列(二十)XX
遍历树.实现造成锁的代码.在线音乐网站 抽象工厂和工厂的区别 简单工厂 : 用来生产同一等级结构中的任意产品.(对于增加新的产品,无能为力) 工厂方法 :用来生产同一等级结构中的固定产品.(支持增加任 ...
- 【javascript】生成二维码
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 < ...
- Devexpress MVC GridView / CardView (持续更新)
//获取gridview里面的combo box 显示的文本 //获取某个column在gridview的 index RightGridView.GetColumnByField("Fun ...
- (77)一文了解Redis
为什么我们做分布式使用Redis? 绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知.这里对 ...
- JAVA第二周课程总结
本周我们开始学习一门新的课程JAVA 本周主要学习内容: 1.认识java,以及它的开发工具jdk 2.了解Java的语言特点 3.搭建Java开发环境,jdk的安装和配置
- 无法加载程序集XXX.dll 此程序集可能是从 Web 上下载的
错误 13 无法加载程序集 file:///D:\Documents\Downloads\kaxaml-master\kaxaml-master\packages\Prism.4.0.0. ...
- VASP学习笔记--简单的VASP运行实例:CrI3做非磁的优化
一.总体思路 1)写入INCAR: 2)写入POSCAR,就是坐标文件: 3)写入KPOINTS文件,就是K点的选择: 4)写入POTCAR,写入POTCAR(找到势文件,然后按照POSCAR中的元素 ...