2021-04-22

JAVA常用类 异常类和容器

目录

JAVA常用类 异常类和容器

一.JAVA的异常类(Exception类)

1.java异常的分类:

2.java异常的处理

3.自定义异常类

二.JAVA常用类 

一.String类

二.StringTokenizer类

三.StringBuffer类

四.Scanner类

五.Date类和Calendar类

六.MAth类 bigIntegar类和Random类

七.Class类和Console类

八.Pattern类和Matcher类(模式匹配)

三.JAVA容器(collection)

1.Iterator接口(迭代器)

2.Collection接口(父接口)

3.容器类常用类方法

 


一.JAVA的异常类(Exception类)

1.java异常的分类:

(1)不可处理异常(error)

一般是java内部出现了异常,如java虚拟机异常,这种异常程序员是无法处理的。

(2)可处理异常(exception)

[1]运行时异常(runtime exception):对于这种异常java自身会进行处理,因此用户可处理也可不处理,如除法除数为零问题。

[2]代码本身异常(exception):这种异常java要求程序员必须进行处理,否则编译不通过。

2.java异常的处理

(1)java异常的处理机制

java类库拥有专门处理异常情况的异常类(Exception类及其子类),发生异常(exception)时java会生成该种异常的对象,并可调用对象的方法。

注意:java所有异常类(这里包括自定义异常)均为Exception类(异常的祖宗类)的子类

(2)异常的5个关键字

[1]throw(抛出Exception类的子类):

用法:throw new 异常类名称();

[2]throws(声明代码中可能出现的异常类):

用法:class 类名 throws 异常类名称{...},测试类(主类)中使用

注意:throws与throw两个关键字区别(这两个关键字类似于类声明与调用):

throw是代码运行过程中实际执行抛出异常操作;

throws是代码执行前声明异常的操作。

[3]try(审敛可能出现异常的代码)

    catch(异常出现的解决) (这两个关键字通常一同出现,故再次归为一起)

用法:try {...} catch(异常 实例对象) {...}

注意:对于多种异常,try可以与多个catch连用

try {...}

catch(异常1 实例对象1) {...}

catch(异常2 实例对象2){...}

[4]finally(一般用于代码执行结束处理,如从文件中读入数据最好执行完代码后最好关闭文件)

注意:finally {...}中的语句无论异常是否发生,catch是否执行都会执行

3.自定义异常类

java中支持自定义异常类,用户自定义的异常需为javaException类的子类(即自定义异常类继承自Exception类)

格式:自定义异常类 extends Exception {...}

为了方便大家理解异常,这里笔者使用自定义异常类向大家展示异常的实现

创立了自定义异常类InformationException(),两个操作类back_members()front_members(),主类InformationCheck()、

简要说明一下代码设计原理:

InformationException类是自定义异常类

front_members与back_members用于生成对象并调用类方法使用户输入IDnumber,其中front_members对象要有''F后缀,back_members要有'B'后缀;检查后缀是否正确决定异常是否发生

InformationCheck测试类用于实际运行程序

InformationException()代码如下:

import java.util.Scanner;
public class InformationException extends Exception {
        char flag;
        public InformationException(String IDnumber,char flag) {
                String string = "请检查你输入的IDnumber是否正确";
                System.out.println(string);
        }
                public String InformationReset (String IDnumber) {
                        Scanner scanner = new Scanner(System.in);
                        IDnumber = scanner.next();
                        return IDnumber;
                }
}

back_members()代码如下

    public class back_members{
        String IDnumber;
        public void checkIDnumber(String IDnumber,char position) throws InformationException {
            IDnumber = this.IDnumber;
            if (position != 'B') {//检查position是否为B
                throw new InformationException(IDnumber, position);
            }
        }
        public void setInformation() {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入您的IDnumber并在后面加'B'");
            IDnumber = scanner.next();//输入IDnumber字符串
        }
    }

front_members()代码如下: 

    import java.util.Scanner;
    import java.lang.*;
    public class front_members {
        String IDnumber;
        public void checkIDnumber(String IDnumber,char position) throws InformationException {
        IDnumber = this.IDnumber;
            //检查position是否为F
            if (position != 'F') {
                throw new InformationException(IDnumber, position);
            }
    }
    public void setInformation() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的IDnumber并在后面加'F'");
        IDnumber = scanner.next();//输入IDnumber字符串
    }
}

InformationCheck()代码如下: 

​
import java.util.Scanner;
import java.lang.*;

public class InformationCheck {

    public static void main(String args[]) throws InformationException{
        String message = "请重新输入您的IDnumber: ";
        System.out.println("请输入你所在蓝旭工作位置:前端 or 后端");
        System.out.println("前端请输入1,后端请输入2");
        Scanner scanner = new Scanner(System.in);
        int number;
        number = scanner.nextInt();
        System.out.println("后端请在IDnumber后面加B,前端请在IDnumber前面加F");
        if (number == 1) {
            front_members frontmember = new front_members();
            try {
                frontmember.setInformation();
                frontmember.checkIDnumber(frontmember.IDnumber, frontmember.IDnumber.charAt(frontmember.IDnumber.length() - 1));
                //检查输入的IDnumber是否有错位
            }
            catch(InformationException e) {
                frontmember.checkIDnumber(frontmember.IDnumber,frontmember.position);
                System.out.println("请重新输入你的IDnumber");
                frontmember.IDnumber = scanner.nextLine();
            }
        }
        if(number == 2) {
            back_members backmember = new back_members();
            try {
                backmember.setInformation();
                backmember.checkIDnumber(backmember.IDnumber, backmember.IDnumber.charAt(backmember.IDnumber.length()-1));
                //检查输入的IDnumber是否有错位
            }
            catch(InformationException e) {
                backmember.checkIDnumber(backmember.IDnumber,backmember.position);
                System.out.println("请重新输入你的IDnumber");
                backmember.IDnumber = scanner.nextLine();
            }
        }
    }

}

​

运行效果截图: 

二.JAVA常用类 

一.String类

1.String类两种构造方法
[1]String(char []a)
[2]String(char []a,int startindex,int count)从字符数组中startindex位置开始截取count个字符
2.String类的6个类方法
(1)length()计算字符串长度

(2)boolean equals(String s)判断两个字符串是否相等
用法:A equals(B)(A B为两个字符串)

(3)boolean compareTo(String s)字典顺序比较两个字符串大小

(4)boolean startsWith(String s)boolean endWith(String s)判断字符串前缀(后缀)是否包含目标字符串
用法:A startWith(B) 字符串A前缀是否与B相等

(5)boolean contains(String s)判断字符串中是否包含参数s

(6)int indexOf(String s)和int lastIndexOf(String s)从0开始索引返回第一次搜寻到目标字符序列的位置

(7)String replaceAII(String s,String replacement)后者替换前者(全部替换)

(8)String[] split(String s)以s为分隔符分开字符串返回字符串数组

3.String类中关于处理字符串存入字符数组,字节数组方法

(1)字符串与字符数组

char[] getChars(int start,int end,char c[],int offset)

字符序列从start开始复制到end-1,从offset开始存入字符数组。

char[] toCharArray()

字符序列直接复制到字符数组中,必须保证字符串长度等于数组长度

(2)字符串与字节数组

byte[] getBytes()

字符序列直接复制到字节数组中,类似与字符数组中的toCharArray()方法。

二.StringTokenizer类

1.构造方法

(1)StringTokenizer(String s)默认分析器

(2)StringTokenizer(String s,String a)以字符串a为分隔符的分析器

2.StringTokenizer3个类方法

计数变量默认等于字符串中语言符号数

(1)nextToken()获取语言符号同时计数变量减1

(2)countToken()得到分析器对象计数变量值

(3)haxMoreTokens()获取语言符号控制条件

这里我使用如下代码是大家尽量理解StringTokenizer

import java.util.*;
public class DateOperation {
    public static void main(String args[]) {
        Date nowtime = new Date();
        //格式化日期
        String date = String.format("%tY年%<tm月%<td日", nowtime);
        String regex = "[^0123456789.]+";
        date = date.replaceAll(regex,"#");
        StringTokenizer stringtokenizer = new StringTokenizer(date,"#");
        while(stringtokenizer.hasMoreTokens()) {
            String item = stringtokenizer.nextToken();
            System.out.println(item);//依次输出日期年 月 日
        }
    }
}

运行结果如下: 

三.StringBuffer类

1.构造方法

(1)StringBuffer()构造可容纳16字符的字符串对象

(2)StringBuffer(int size)自定义容纳字符数量字符串对象

(3)StringBuffer(String s)自定义字符序列s长度加16个字符的字符串对象

2.StringBuffer6个类方法
(1)append追加字符串

append(String s)字符串追加

append(Object o)Object字符序列追加

append(int n)整型转化字符串再追加

(2)char charAt(int n)char setCharAt(int n,char ch)

char charAt(int n)得到n位置字符

char setCharAt(int n,char ch)用ch替换n位置字符

(3)insert(int index,String str)str字符串插到index位置上

(4)reverse()反转字符序列

(5)delete(int startIndex,int endIndex)字符串中删除startIndex到endIndex字符串

(6)replace(int startIndex,int endIndex,String str)用字符串str替换startIndex到endIndex字符串

四.Scanner类

nextInt()输入整型

next()输入字符串

nextDouble()输入浮点型

为了是大家更好理解与字符串有关的常用类,将在以下代码中尽可能地实现上述方法:

​
import java.util.*;
import java.lang.*;
public class string {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
         String  number1 = new String();
         number1 = scanner.next();//读入字符串number1
        String  number2 = new String();
        number2 = scanner.next();//读入字符串number2
        //输出两个字符串的长度
        int long1,long2;
        System.out.println(long1 = number1.length());
        System.out.println(long2 = number2.length());
        //比较两个字符串是否相等
        System.out.println(number1.equals(number2));
        //比较两个字符串大小
        System.out.println(number1.compareTo(number2));
        //将number1存入字符数组a中
        char []a = number1.toCharArray();
        for(int i=0;i<=long1-1;i++) {
            System.out.println(a[i]);//两种方式输出字符数组中的元素
            System.out.println(number1.charAt(i));
        }
        //将number2存入字节数组b中
        byte []b = number2.getBytes();
        for(int i=0;i<=long2-1;i++) {
            System.out.print(b[i]);
        }
        for(int i=0;i<=long2-1;i++) {
            System.out.print(number2.charAt(i));
        }
        StringBuffer string1 = new StringBuffer(number1);
        StringBuffer string2 = new StringBuffer(number2);
        //将string2追加到string1上并输出
        string1.append(string2);
        System.out.println(string1);
        //将string2插入到string1前端
        string1.insert(0,string2);
        //调用startWith方法看此时的string1是否适宜string2作为前缀
        char c[]={0};string1.getChars(0,string1.length(),c,0);//将stringBuffer类对象string1存入字符数组中
        for(int i = 0; c.length - 1 >= i; i++) {
            System.out.println(c[i]);//输出string1
        }
        //用字符串number2替换number1
        number1.replaceAll(number1,number2);
        System.out.println(number1);
    }
}

​

 

运行结果如下图:

 

 

 

五.Date类和Calendar类

1.Date类

[1]无参构造方法,直接获取本机时间

[2]有参数构造方法,默认公元为格林威治时间

Date(s) s为正为公元后时间即格林威治时间加s,为负为公元前时间即格林威治时间减s,s单位为毫秒ms

2.Calendar类

使用jCalendar类静态方法getInstance()可以生成一个日历对象

3.日期格式化

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

格式化模式中java会自动识别其中格式化符号,保留非格式化符号,同时格式化符号要与日期列表一一对应

格式化符号请自行查阅

六.MAth类 bigIntegar类和Random类

1.Math类

Math类方法请自行查阅

2.BigIntegar类(用于处理较大的int型数据)

BigIntegar类方法请自行查阅

3.Random类(随机数生成器)

Random类方法

nextInt()整型随机数

nextInt(s)从0到s-1中的随机数

nextBoolean()布尔型随机数

4.数字格式化

[1]格式化整数

%d 十进制 %o 八进制  %x 小写十六进制 %X 大写十六进制

[2]格式化浮点数

%m.nf m为所占宽度 n为保留小数带你位数

七.Class类和Console类

1.Class类可以不使用new关键字生成对象

类方法:newInstance()

格式:Class 对象 = Class.forName(String className)(相当于对象声明)

className 对象 = (className)对象.newInstance()

2.Console类(读取一行文本)

类方法:readpassword()

格式:Console 对象 = System.console();

char []数组名 = 对象.readpassword();

八.Pattern类和Matcher类(模式匹配)

这两个类同时使用才可用于检索字符串中的目标字符串

1.compile(String regex,int flags)方法

用于输入匹配的字符串

2.matcher(input)方法

用于输入带检索的字符串

3.格式

Pattern 对象1= Pattren.compile(匹配字符串)

Matcher 对象2= 对象1.matcher(检索字符串)

此时的对象2便可以使用模式匹配中的方法

三.JAVA容器(collection)

容器的定义:在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器

1.Iterator接口(迭代器)

Boolean hasNext():检索容器中是否还有下一个类

Object next():提取容器中的类,并指向下一个

void remove():移除容器其中的类

2.Collection接口(父接口)

Collection接口有三个子接口:

(1)List(列表):有序性,重复性,该接口提供了特殊的迭代器ListIterator(允许元素的插入和替换)

实现List接口的类:

【1】ArrayList(数组存储):【2】LinkedList类(链表存储):

(2)Set(集合):

实现Set接口的类:

【1】HashSet类(HASH表存储)【2】EnumeSet类(枚举存储) 【3】TreeSet

(3)Queue

3.容器类常用类方法

(1)Iterator iterator()返回能够遍历当前集合中所有元素的迭代器

(2)boolean add(Object obj):向容器中添加指定的元素

(3)Object get(int index)获取下标为index的那个元素
(4)Object remove(int index)删除下标为index的那个元素
(5)Object set(int index,Object element)将下标为index的那个元素置为element
(6)Object add(int index,Object element)在下标为index的位置添加一个对象element

(7)int size():返回容器中的元素数
版权声明:本文为CSDN博主「安静的技术控」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a2011480169/article/details/52047600

这里我以ArrayListr容器为例讲解容器的几种方法:

import java.util.*;
public class counter {
    public static void main(String args[]) {
        ArrayList<Integer> arraylist = new ArrayList();//构造容器ArrayList arraylist
        arraylist.add(20);
        arraylist.add(20);
        arraylist.add(01);
        arraylist.add(32);
        arraylist.add(71);
        Iterator<Integer> iterator = arraylist.iterator();
        while(iterator.hasNext()) {
            Integer number = iterator.next();
            System.out.print(number);
        }
        System.out.print("\n");
        System.out.println(arraylist);
        System.out.println("移除下标为3元素,并用数字7替换下标为4的元素");
        arraylist.remove(3);
        arraylist.set(1,7);
        System.out.println(arraylist);
    }

}

运行结果如下: 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值