异常类

异常

异常:在程序的运行过程中,发生了不正常的现象,阻止了程序的运行,我们称之为发生异常。
Java使用throw关键字抛出一个Exception子类的实例表示异常发生。

try-catch语句

语句格式

try{包含可能发生异常的语句
}
catch(ExcptionSubClass1 e) {...
}
catch(ExcptionSubClass2 e) {...
}
  • try中没有异常,catch中代码不执行
  • try中有异常,catch进行捕获
    如果catch中的异常类型和出现的异常类型匹配的话,执行catch中的代码,进行捕获。
    如果catch中的异常类型和出现的异常类型匹配的话,不执行catch中的代码,不进行捕获。程序相当于遇到异常,中断。
  • try中如果出现异常,然后用catch捕获成功的话,那么try中的后续代码是不会执行的。
  • 如果catch捕获异常成功,那么try-catch后面的代码该执行还是执行没有影响。

catch处理异常方式

  • 什么都不做
  • 输出自定义异常信息
  • 打印异常信息
    调用toString方法,显示异常的类名。System.out.println (e.toString ());
    显示异常描述信息对应的字符串。System.out.println (e.getMessage ());
    显示异常的堆栈信息:将异常信息捕获以后,在控制台将异常的效果展示出来。
    e.printStackTrace();
  • 抛出异常. throw e

自定义异常类

在编写程序是可以扩展Exception类定义自己的异常类,然后根据程序的需要来规定哪些方法产生这样的异常。一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。
自定义的异常可继承:运行时异常,也可以继承检查异常。
如果继承的是运行是异常,那么在使用的时候无需额外处理。
如果继承的是检查异常,那么使用的时候需要try-catch捕获或者throws。

常用类

String类

构造String对象

常量对象

String str = "abc"

String对象

String s = new String("We are students");
String t = new String("We are students");
String类的构造方法

String (char a[])用一个字符数组a创建一个String 对象

char a[] = {'j','a','v','a'};
String s = new String(a);

相当于

String s = new String("Java");

String(char a[],int startIndex.int count) 提取字符数组a中的一部分字符创建一个String对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数。

char a[] = {'零','壹','贰','叁','肆','伍','陆','染','捌','项');
String s = new String(a,2,4);

相当于

String s = new Srting("贰叁肆伍");

引用String常量

String s1,s2;
s1 = "你好";
s2 = "你好";
字符串的并置
String you = "你";
String hi = "好";
String testOne;
testOne=you+hi;
Sytem.out.println (hello == testOwo); //输出结果是false
String hello = "你好";
String testTwo = "你"+"好";
Sytem.out.println (hello == testTwo); //输出结果是true
Sytem.out.println ("你好" == testTwo); //输出结果是true
Sytem.out.println ("你好" == testTwo); //输出结果是true
String testThree = you+hi;
Sytem.out.println (testThree == testOwo); //输出结果是false

#####String类的常用方法

public int length 获取一个String对象的字符序列的长度。
2. public boolean equals(String s) 比较当前String对象的字符序列是否与参数s指定的String对象的字符序列相同。
3. public boolean startsWith(String s) 判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列。
4. public boolean endsWith(String s) 判断当前String对象的字符序列后缀是否是参数指定的String对象s的字符序列。
5. public int compareTo(String s) 按字典序与参数指定的String对象s的字符序列比较大小。相同返回值为0,大于s的字符序列,返回正值,小于s的字符序列,返回负值。 public int compareToIgnoreCase(String s) 该方法忽略大小写。
6. public boolean contains(String s) 判断当前String对象的字符序列是否包含参数s的字符序列。
7. public int indexOf(String s,int fromIndex) 从下标fromIndex处开始开始查找str在字符串中第一次出现的位置。
8. public int lastIndexOf(String s,int fromIndex) 从下标fromIndex处开始开始查找str在字符串中最后一次出现的位置。
9. public String substring(int startpoint) 获得一个新的String对象,新的String对象的字符序列是复制当对象的字符序列中的startpoint 位置至最后位置上的字符所得到的字符序列。String对象调用substring(int start, int end)方法获得一个新的 Sting对象,新的Sring 对象的字符序列是复制当前Srinrg对象的字符序列中的un位置至end-1位置上的字物所得到的字符序列。

字符串与基本数据的相互转化

Integer类调用其类方法public static int parseInt(String s)可将有“数字”字符组成的字符序列,转化为int型数据。

int x
String s = "876";
x = Integea.parseInt (s);

将数值转化为String对象

String str = String.valueOf (12312.9876);

StringTokenizer类

当分析一个String对象的字符序列并将字符序列分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizer类,该类有两个常用的构造方法。

  • StringTokenizer(String s): 为String对象s构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab 符、进纸符做分隔标记。
  • Sringeizer(String s, Sring delim);为Sring对象s构造一个分析器。 参数delim的字符序列中的字符的任意排列被作为分隔标记。
StringTokenizer fenxi = new StringTokenizer("you are welcome");
StringTokenizer fenxi = new StringTokenizer("you#*are*##welcome", "*#");

Scanner类

Scanner对象

Scanner对象可以解析字符序列中的单词

String NBA = "I Love This Game";

为了解析出NBA的字符序列中的单词,可以构造一个Scanner对象

Scanner scanner = new Scanner (NBA);

Scanner对象可以调用方法

useDelimiter (正则表达式);

StringBuffer类

StringBuffer对象

StringBuffer类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列。

StringBuffer s = new StringBuffer("我喜欢");

对象s可调用append方法追加一个字符序列

s.append ("玩篮球");

StringBuffer类有三个构造方法:

  • StringBuffer();
  • StringBuffer(int size);
  • StringBuffer(String s);
StringBuffer类的常用方法
  • StringBuffer append(String s)将String对象s的字符序列追加到当前StringBuffer对象的字符序列中。
  • public char charAt(int n) 得到StringBuffer对象的字符序列位置n上的字符。
  • public char setCharAt(int n) 将当前StringBuffer对象的字符序列位置n处的字符用参数ch指定的字符替换。
  • StringBuffer insert(int index, String str) 使用insert方法将参数str指定的字符序列插入到参数index指定的位置。
  • public StringBuffer reverse() 使用reverse方法将该对象实体中的字符序列翻转。
  • StringBuffer delete(int startIndex, int endIndex) 从当前StringBuffer对象的字符序列中删除一个子字符序列。删除的子字符序列从startIndex位置到endIndex-1位置。
  • StringBuffer replace(int startIndex, int endIndex, String str) 将当前StringBuffer对象的字符序列的一个子字符序列用参数str指定的字符序列替换。被替换的子字符序列从startIndex位置到endIndex-1位置。

Date类与Calendar类

Date类

使用无参构造方法

Date nowTime = new Date();

使用带参数的构造方法

Date date1 = new Date(1000),
date2 = new Date(-1000);
Calendar类

日期的格式化

format方法
format (格式化模式,日期列表)

格式化模式:是一个用双引号括起来的字符序列,该字符序列中的字符由时间格式符和普通字符所构成。
日期列表:可以使用逗号分隔的Calendar对象或Date对象。

Date nowTime = new Date();
String s1 = String.format ("%tY年%tm月%td日",nowTime,nowTime,nowTime);

格式化同一日期:用几个格式符号格式“日期列表”中的同一个日期,可以在“格式化模式”中使用“<” 。

String str1 = String.format ("%tY年%<tm月%<td日",nowTime);
不同区域的星期格式
format (Locale locale,格式化模式,日期列表);
String s = String.format (Locale.US,"%ta (%<tF)",new Date());

Math类、BigInteger类和Random类

Math类
  • public static long abs(double a):返回 a的绝对值 。
  • public static double max(double a,double b):返回a、b的最大值。
  • public static double min(double a,double b):返回a、b的最小值。
  • public static double random():产生一个 0~1之间的随机数(不包括0和1).public static double pow(double a,double b):返回a的b次幂。
  • public static double sqrt(double a): 返回a的平方根。
  • public static double log(double a):返回a的对数。
  • public static double sin(doublea):返回a的正弦值。
  • public static double asin(double a):返回a的反正弦值。
  • public static double ceil(doublea):返回大于a的最小整数,并将该整数转化为double型数据。例如,Math.ceil(15.2)的值是16.0。
  • public static double floor(double a): 返回小于a的最大整数,并将该整数转化为double型数据。例如,Math.floor( 15.2)的值是15.0,Math.floor(-15.2)的值 是-16.0。
  • public static long round(double a):返回值是(long)Math.floor(a+0.5)),即所谓a的“四舍五入”后的值。一个比较通俗好记的办法是:如果a是非负数,round 方法返四a的四舍五入后的整数(小数大于等于0.5入,小于0.5舍):如果a是负数,round方法返回a的绝对值的四舍五入后的整数取负,但注意,小数大于0.5入,小于等于0.5舍,例如,Math.round(-15.501)的值是-16。Math.round(-15)。
BigInteger类
  • public BigInteger add(BigInteger val):返回当前对象与val的和。
  • public BigInteger subtract(BigInteger val): 返回当前对象与val的差。
  • public BigInteger multiply(BigInteger val): 返回当前对象与val的积。
  • public BigInteger divide(BigInteger val):返回当前对象与val的商。
  • public Biglnteger remainder(BigInteger val):返回当前对象与val的余。
  • public int compareTo(BigInteger val):返回当前对象与val的比较结果,返回值是1,-1或0,分别表示当前对象大于、小于或等于val。
  • public Biglnteger abs0:返回当前整数对象的绝对值。
  • public Biglnteger pow(int a);:返回当前对象的a次幂。
  • public String toString():返回当前对象十进制的字符串表示。
  • public String toString(int p):返回当前对象p进制的字符串表示。
Random类

返回一个随机整数

 Random random = new Random();random.nextInt ();

返回一个0~n之间的随机数

 Random random = new Random();random.nextInt (100);//返回0~99之间的某个整数(包括0,不包括100)

返回一个随机boolean值

random.nextBoolean ();

Class类与Console类

Class类

使用Class的类方法得到一个和某类相关的Class对象:

public static Class forName (String className) throw ClassNotFoundException

对Class方法的调用

public Object newInstance () throws InstantiationException,
IllegalAccessException
Console类

如果希望在键盘输入一行文本,但不想让该文本回显,即不在命令行显示。

Console cons = System.console ();

###Patter类与Matcher类

Patter类

建立Patter类对象

Pattern patter = Patter.compile (regex);//正则表达式regex做参数
String regex = "good";
pattern = Pattern.compile (regex);
Matcher

得到Matcher对象

Matcher matcher = pattern.matcher (input);

容器

概述

容器可以管理对象的生命周期、对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用编写任何一行程序代码来产生对象,或是建立对象与对象之间的依赖关系。

容器类

Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示:

  • Collection
    List
    ArrayList
    LinkedList
    Vector
    Stack

  • Set
    HashSet
    LinkedHashSet
    TreeSet

  • Map
    HashMap
    LinkedHashMap

  • TreeMap
    ConcurrentHashMap
    Hashtable

  • List的实现类(ArrayList,Vector,LinkedList)
    ArrayList和Vector内部是线性动态数组结构,所以查询效率上会高很多,Vector是线程安全的,相比ArrayList线程是不安全的,所以性能会稍慢一些。
    LinkedList:是双向链表的数据结构存储数据,在做查询时会按照序号索引数据进行前向和后向遍历,查询效率偏低,但插入数据时只需要记录本项的前后项即可,所以插入速度较快。

  • Set的实现类有HashSet和TreeSet
    HashSet:它的内部是哈希表(实际上是一个HashMap实例)支持的。但他不保证set元素的迭代顺序。
    TreeSet:TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序。

  • Map接口有三个实现类:Hashtable,HashMap,TreeMap,LinkedHashMap
    Hashtable:内部存储的键值对是无序的,是按照哈希算法进行排序,与HashMap最大的区别就是线程安全。键或者值不能为null,为null就会抛出空指针异常。
    TreeMap:基于红黑树(red-black tree)数据结构实现,按key排序,默认的排序方式升序。
    LinkedHashMap:有序的Map集合实现类,相当于一个栈,先put进去的最后出来,先进后出。

第二周预习:异常类,常用类,容器相关推荐

  1. 蓝旭前端第二周预习———HTML标签+如何查看控制台

    蓝旭前端第二周预习---HTML标签+如何查看控制台 HTML标签 文档 文档生成 文档结构 标签 标签语法 基本标签 如何查看控制台(chrome) HTML标签 文档 文档生成 VScode中&q ...

  2. 第二周:java异常和常用类 容器

    一.java异常类 1.定义 异常就是在运行时产生的问题.通常用Exception描述. 在java中,把异常封装成了一个类,当出现问题时,就会创建异常类对象并抛出异常相关的信息(如详细信息,名称以及 ...

  3. JAVA基础03-Object类,常用类,基本的数据结构, Collection常用体系,泛型-泛型通配符

    1.object类 1.概述 java.lang.object类是java语言中的根类,即所有类的超类(基类)他描述的所有的方法子类都可以使用,在对象实例化的时候最终找到的类就是object 如果一个 ...

  4. 第二周预习——html常用标签,认识浏览器

    标签分类: 文字 列表 表格 超链接 图像 表单 文字类标签: <h1></h1>~<h6></h6> 标题 <br/> 换行 <p& ...

  5. 第二周 预习:Java基本语法2、面向对象入门

    1. 方法相关问题 ```java public class Main {static void changeStr(String x) {x = "xyz";}static vo ...

  6. javaSE各阶段练习题--工具类-常用类-递归-包装类-内部类

    1 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter创建对象,完成赋值(setter赋值和构造方法赋值) 在控制台输出学生对象的信息,要求生日的格式 ...

  7. JavaSE基础知识之常用类和集合

    常用类 Object类 protected Object clone() throws CloneNotSupportedException 克隆方法:创建并返回此对象的一个副本 Object 类的 ...

  8. java 向上取整_java 中的异常处理和常用类使用

    一.异常: 1.异常的简单介绍: Throwable类 / Error Exception | | Unchecked Checked Runtime Exception Exception Exce ...

  9. JAVA异常处理、常用类、反射、集合

    异常 异常:在Java中是指被一个方法抛出的对象. 分类:检查异常.运行时异常.错误 运行时异常(uncheckd):RuntimeException和其子类 检查异常(checkd/搜检异常):指E ...

最新文章

  1. python函数代码的复用_Python__函数和代码复用
  2. Codeforces 706D Vasiliy's Multiset
  3. pytorch无法将模型加载到gpu上
  4. office漏洞利用--获取shell
  5. 网页设计师的最佳设计工具名单出炉
  6. php ajax xmlhttpreq 上传文件 get,使用Ajax XmlHttpRequest上传文件
  7. css选择指定class的元素
  8. (转)基于MVC4+EasyUI的Web开发框架经验总结(6)--在页面中应用下拉列表的处理...
  9. 浅谈数据结构之顺序队列(五)
  10. ipa 上传卡在鉴权_Application Loader上传app,一直卡在“正在通过 App Store 进行鉴定”...
  11. 18-10-29 关于设计器机器人等安装遇到的问题的解决方法
  12. mysql 删除后缀表_mysql批量删除指定前缀或后缀表
  13. MYSQL中ALTER命令
  14. 【嵌入式系统—ARM指令集】快速了解
  15. 微信H5分享、复制链接遇到的坑
  16. 小程序 canvas旋转文字
  17. CSS盒子模型居中方法,附超全教程文档
  18. 魔兽地图编辑器插件YDWE的使用与基本设置
  19. c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解
  20. 每个人都应该学的技能 - 如何做出好决定

热门文章

  1. 编程基础 | 四种常见的 POST 提交数据方式
  2. 字节byte转换为B,KB,MB,GB,TB
  3. 【小松教你手游开发】【unity实用技能】u3d 层次问题总结
  4. Linux中如何读写硬盘上指定物理扇区
  5. 举个例子讲下transformer的输入输出细节及其他
  6. jms规范以及activeMq相关介绍
  7. C陷阱与缺陷(一)词法“陷阱”、语法“陷阱”
  8. 苹果手机几月份最便宜_1亿像素最便宜手机, 不是小米10, 网友: 这款手机拍照不错...
  9. java JSR303 参数验证
  10. Kotlin——幸运大转盘