首页 > 编程语言 >蓝旭预习博客2:Java异常类、常用类、容器与泛型

蓝旭预习博客2:Java异常类、常用类、容器与泛型

时间:2024-03-31 15:59:01浏览次数:30  
标签:Java String int System 蓝旭 泛型 println 异常 public

Java异常类

1.什么是异常

异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失。

例如下标越界异常 (IndexOutOfBoundsException)空指针异常(NullPointerException) 

算术异常( ArithmeticException)数字格式化异常(NumberFormatException)等等,下面是其中一些实例:

空指针异常:

算数异常:

​​​​​​​

2.异常的处理

1.捕获

初步try&catch处理异常:

try{

        异常语句

}catch(Exception e){

}finally{

        一定会执行的代码

}

public class ExceptionDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        int temp = 0;
        try {
            temp =a/b;
        }catch (Exception e){
            System.out.println(e);
        }
        System.out.println(temp);
    }
}

 运行如下:

java.lang.ArithmeticException: / by zero
0

2.抛出

在Java中抛出异常的方法是用关键字throw与throws引发明确的异常。

二者区别在于:

throws关键字是声明在方法首部的,表示这个方法体会有抛异常的行为,只是一个可能性的评估;但是throw关键字是一个具体的关键动作,是会通过判断去抛出具体异常的这么一个行为;

public class test4 {
    public static int divide(int x, int y) throws ArithmeticException{
                                            //抛出可能会发生的异常
        if(y == 0) {
            throw new ArithmeticException("y == 0");
            //具体执行会抛出异常的动作
        }
        return x / y;
    }
    public static void main(String[] args) {
        try{
            int ret = divide(10,5);
            System.out.println(ret);
        }catch (ArithmeticException e){
            e.printStackTrace();
            System.out.println("异常警告,除数为0");
        }finally {
            System.out.println("程序结束");
        }
    }
}

3.自定义异常

自定义异常直接继承Exception就可以完成自定义异常:

public class XXXXException extends Exception 或者RuntimeException{

        添加一个空参构造方法

        添加一个带异常信息的构造方法

}

public class MyException extends Exception {
   private int errorCode;
 
   public MyException(String message, int errorCode) {
      super(message);
      this.errorCode = errorCode;
   }
 
   public int getErrorCode() {
      return errorCode;
   }
}

Java常用类

1.包装类

基本数据类型所对应的引用数据类型 java.lang为包装类;

包装类还提供更多的功能例如:获得类型的最大值:Integer.MAX_VALUE;最小值Integer.MIN_VALUE;将一个类型转为另一个类型integer.doubleValue();将字符串转化为数字Integer.parseInt("100");将数字转化为字符串Integer.toString(100)等等;

2.String类

使用

创建方法如下:

    String name = "hello"; //    "hello" 常量存储在字符串池中。
	name = "zhangsan";    //"zhangsan" 赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟空间。
	String name2 = "zhangsan" ;  //如果有就引用, 没有就重新开辟空间。
	//字符串另一种创建方式 。
	String s = new String("java是最好的编程语言")://在堆和栈里同时创建,栈里的指向堆里的。
	String str = new String("java");
	String str2 = new String("java");
	System.out.println(str==str2);//返回false   new 新建对象。 用equals 比较的数据返回true。

StringBuffer与StringBuilder

StringBuffer: 可变长字符串,JDK1.0提供,运行效率慢、线程安全;
StringBuilder: 可变长字符串,JDK5.0提供,运行效率快、线程不安全; 

	StringBuffer sb = new StringBuffer();
	1 sb.append(String str);//在字符串末尾追加
	2.sb.insert(int index,String str);//在index位置添加str
	3.sb.replace(int start,int end,String str);//下标为start到下标为end-1的位置替换为str,! 换头不换尾!
	4.sb.delete(int start,int end);//删除下标为start到下标为end-1的位置

另外,StringBuffer和StringBuilder 均比String效率高、节省内存

3.BigDecimal类

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal;

创建方式:

BigDecimal bd = new BigDecimal("1.0");

使用: 

public class Test {
    public static void main(String[] args) {
        BigDecimal bd1=new BigDecimal("1.0");
        BigDecimal bd2=new BigDecimal("0.9");
        System.out.println(bd1.add(bd2)); //加法
        System.out.println(bd1.subtract(bd2)); //减法
        System.out.println(bd1.multiply(bd2)); //乘法
        System.out.println(bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP)); //除法
    }
}

容器,泛型

1.容器

例如数组,用于储存数据;

2.list

有LinkedList和ArrayList:

  • LinkedList使用链表的方式进行过存储(不连续成块的内存)

  • ArrayList使用数组的形式进行存储(连续的内存)

3.set 

一个不包括重复元素(包括可变对象)的Collection,是一种无序的集合。Set不包含满足 a.equals(b) 的元素对a和b,并且最多有一个null。实现Set的接口有:EnumSet、HashSet、TreeSet等;

Set set = new HashSet();
set.add("2"); set.add("1"); set.add("1");
System.out.println(set);
//上面代码运行只输出一个1且1和2的顺序随机

4.泛型

泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型

使用泛型一方面使代码更加简洁高效,另一方面避免了下转型强转的安全问题(不使用泛型的话,读取时就需要对集合中的数据进行强转)使用泛型在编写集合时声明了类型,增强代码可读性和稳定性。

泛型类形如class Object的声明,例如(源另):

class ObjectExample<T> {
    private T a;

    public T getA() {
        return a;
    }

    public void setA(T a) {
        this.obj = a;
    }
}

public class Test{
	public static void main(String[] args){
	ObjectExanple<Integer> a = new ObjectExanple<Integer>();
    a.setA(23);
    System.out.println(a.getA());

由此可以声明对象,可以使用<>规定这个对象的类型,方便编程,此后当我们使用类时可能仅仅需要一个用泛型的方法,不需要整个类是泛型类。

5.map

 Map是java中的接口,提供了一些常用方法,如keySet()、entrySet()等方法;

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。

标签:Java,String,int,System,蓝旭,泛型,println,异常,public
From: https://blog.csdn.net/zhiyelee/article/details/137173876

相关文章

  • JAVA编程基础与面向对象程序设计(基础)
    1.1标识符与命名规范 标识符:java中的类,方法,变量,包命名的符号。标识符规则(1)只能由字母,数字,下划线,美元符号组成,并且不能一数字开头。(2)java标识符大小写敏感,长度无限制。(3)标识符不可以是java的关键字与保留字。关键字:java中预先定义好的一些有特别意义的单词,它们构......
  • Java多线程三种实现方式
    一、继承Thread方法publicclassMyThreadextendsThread{@Overridepublicvoidrun(){for(inti=0;i<10;i++){System.out.println(getName()+"输出内容");}}publicstaticvoidmain(String[]args){......
  • 二、Java语法基础
    1、Java语言的关键字、标识符及命名规范1)java关键字2)标识符3)JAVA中的命名规范 包名的命名规范:域名.公司名称.项目名称.模块名称 类的命名规范:首字母大写,第二个单词的首字母大写,以此类推。2、进制间的转换(二进制、十进制)1)十进制->二进制 采用除2取余算法,一直除......
  • Java中List集合
    一、ArrayList集合1.ArrayList集合的特点2.ArrayList集合的一些方法①.add(Objectelement)向列表的尾部添加指定的元素。list.add("123");//add()用于向List集合容器中添加元素。②.size()返回列表中的元素个数。list.size();//size()用于获取集合中有多少个元素。③......
  • JavaWeb学习笔记——第十天
    Springboostweb案例(一)准备工作需求说明需要完成以下功能:部门管理员工管理查询部门列表查询员工列表(分页、条件)删除部门删除员工新增部门新增员工修改部门修改员工环境搭建项目架构:准备数据库表(dept、emp)。--部门管理createtabledep......
  • Java实验报告2
    一、实验目的本实验为Java课程的第二次实验,其主要目的如下:理解继承和多态的概念;掌握域和方法在继承中的特点;掌握构造函数的继承和重载;掌握this和super的用法;二、实验原理​继承性是面向对象编程技术的最重要的基础概念之一。在面向对象的程序设计中,类的继承性......
  • 详解 Java多线程带来的的风险-线程安全
    目录一、什么是线程安全? 二、线程不安全的原因1、线程调度是随机的2、修改共享数据:多个线程修改同⼀个变量3、原⼦性 ​编辑(1)什么是原⼦性(2)⼀条java语句不⼀定是原⼦的,也不⼀定只是⼀条指令 (3)不保证原⼦性会给多线程带来什么问题(4)可⻅性:可⻅性指,⼀个线程对共......
  • 解析两大Java框架:Spring与Spring Boot的区别
    Spring框架基本介绍Spring是一个开源的Java平台,它最初是为了解决企业级应用开发的复杂性而创建的。作为一个全面的编程和配置模型,Spring提供了一个框架,让开发者可以构建轻量级、松耦合的应用。SpringBoot基本介绍SpringBoot是基于Spring的一个框架,设计理念是简化新Sp......
  • 【Java编程】【算法面试题】【数组轮转】给定一个整数数组 nums,将数组中的元素向右轮
    原题:给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。例如:nums=[1,0,-1,2,3]k=1预期结果:nums=[3,1,0,-1,2]k=2预期结果:nums=[2,3,1,0,-1]以此类推。。。【本文思路解析】:1.不实用额外的数组,会多一部分开销;2.每次轮转,位置移动1位,共计移......
  • 会员制医疗预约服务管理信息系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目持续更新中.....2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssm+vue等技术项目合集)1.系统功能模块2.管理员功能模块......