精华内容
下载资源
问答
  • Java中常见的异常类型

    2019-09-26 00:08:15
    异常大体分为编译异常和运行异常类,如果用软件开发(如Eclipse)编译异常在写代码时得到提醒...如果你不知道将发生的异常集体属于,而可以肯定这个地方会出现异常时,可以把异常类型定义为Exception。 (2)...

    异常大体分为编译异常和运行异常两类,如果用软件开发(如Eclipse)编译异常在写代码时得到提醒,而运行异常需要在运行时才能得到提示。

    下面介绍几种常见的异常类型,便于在出错时对程序进行查错:

      (1)Exception    各种异常的根类

           如果你不知道将发生的异常集体属于哪,而可以肯定种这个地方会出现异常时,可以把异常类型定义为Exception。

      (2)ArithmeticException     算数运算错误异常

           这个异常是在算数运算时经常遇到的,常见的情况是除数为0时抛出的异常。

      (3)ArrayIndexOfOutBoundsException    数组下标越界

           编程时要记住Java数组下标是从0开始的,数组下标最大值为数组长度减1,如arr[10],最后一个数组元素是arr[9],如果写成arr[10]就会出现ArrayIndexOfOutBoundsException异常。

      (4)NullPointException    空指针异常

           这个异常是针对调用未经初始化或未定义的对象抛出的异常。

      (5)ClassNotFoundException   不能加载所需的类

           在java文件编译后,可能是由于需要把.class文件移到了其他的文件夹,此时引用这个.class文件要注意修改其路径,否则会抛出ClassNotFoundException异常。

      (6)InputMismatchException    输入的数据类型与所需类型不匹配异常

           比如你需要int类型,但是通过输入框得到的是String类型,就会抛出InputMismatchException异常。

      (7)IllegalArgumentException   方法接受非法参数

           这个是传入方法中的参数类型不正确,如方法plus(int a,int b),调用时写成a.plus(1,a)就会出现

    IllegalArgumentException异常。

      (8)NumberFormatException    字符串转换成数字异常

           在数据类型强制转换时出现的异常,字符串“123”转换成数字123不会出现异常,但是字符串“1@23”转换成int类型就会抛出ClassCastException异常。     

     

    转载于:https://www.cnblogs.com/lingyi1111/p/4430031.html

    展开全文
  • 异常大体分为编译异常和运行异常类,如果用软件开发(如Eclipse)编译异常在写代码时得到...如果你不知道将发生的异常集体属于,而可以肯定这个地方会出现异常时,可以把异常类型定义为Exception。 (2)Ar...

    异常大体分为编译异常和运行异常两类,如果用软件开发(如Eclipse)编译异常在写代码时得到提醒,而运行异常需要在运行时才能得到提示。

    下面介绍几种常见的异常类型,便于在出错时对程序进行查错:

      (1)Exception    各种异常的根类

           如果你不知道将发生的异常集体属于哪,而可以肯定种这个地方会出现异常时,可以把异常类型定义为Exception。

      (2)ArithmeticException     算数运算错误异常

           这个异常是在算数运算时经常遇到的,常见的情况是除数为0时抛出的异常。

      (3)ArrayIndexOfOutBoundsException    数组下标越界

           编程时要记住Java数组下标是从0开始的,数组下标最大值为数组长度减1,如arr[10],最后一个数组元素是arr[9],如果写成arr[10]就会出现ArrayIndexOfOutBoundsException异常。

      (4)NullPointException    空指针异常

           这个异常是针对调用未经初始化或未定义的对象抛出的异常。

      (5)ClassNotFoundException   不能加载所需的类

           在java文件编译后,可能是由于需要把.class文件移到了其他的文件夹,此时引用这个.class文件要注意修改其路径,否则会抛出ClassNotFoundException异常。

      (6)InputMismatchException    输入的数据类型与所需类型不匹配异常

           比如你需要int类型,但是通过输入框得到的是String类型,就会抛出InputMismatchException异常。

      (7)IllegalArgumentException   方法接受非法参数

           这个是传入方法中的参数类型不正确,如方法plus(int a,int b),调用时写成a.plus(1,a)就会出现

    IllegalArgumentException异常。

      (8)NumberFormatException    字符串转换成数字异常

           在数据类型强制转换时出现的异常,字符串“123”转换成数字123不会出现异常,但是字符串“1@23”转换成int类型就会抛出ClassCastException异常。     

     

    介绍的异常不多,希望对大家有所帮助,希望各位大侠多多指点!  

    展开全文
  • 异常

    2020-03-17 20:01:21
    异常分为哪两种类型, 区别是什么? 什么是异常 从一个代码讲起? package exception; import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner input =new Scanner...

    ①请写出常见的5个异常?
    ②异常的继承体系?
    ③异常分为哪两种类型, 区别是什么?

    什么是异常在这里插入图片描述

    从一个代码讲起?

    package exception;
    
    import java.util.Scanner;
    
    public class Demo1 {
    
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		System.out.println("请输入第一个数:");
    		int num1 = input.nextInt();
    		System.out.println("请输入第二个数:");
    		int num2 = input.nextInt();
    		int num3 =  num1 / num2;
    		System.out.println(num3);
    		input.close();
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    如果用户输入错误, 输入的非正常的数据, 理想状态是代码还可以继续运行.生活中我们遇到异常要进行处理, 处理之后要继续生活下去.
    java中的异常: 程序执行过程中出现的非正常现象.

    如何表示异常的概念

    java面向对象的编程语言, 所以java也对异常进行了抽象, 以OOP的方式处理异常. 用类描述异常.
    Excetion 类表示所有的可以处理的异常的父类.

    //如何编写一个类描述闯红灯的异常
    public class Exception{
        //属性
        private String message; //异常的信息
        public Exception(String msg){
            this.message = msg;
        }
        //方法
        public void printInfo(){
            //可以查看出现异常的具体代码        
        }
    }
    

    在这里插入图片描述
    说明:
    所有异常的根类是Throwable , 两个子类: Error 表示错误, 不是程序可以处理的错误.一些硬件原因无法进行处理.
    第2个子类是: Exception : 异常, 这些异常是可以通过代码处理的.

    如何进行异常处理

    如何处理异常, 台风来了, 处理的机制, 警告: 红色警告, 橙色的警告; 启动三级应急响应机制. 这些应急机制其实就是异常处理. java也提供一套应急处理机制. 来处理java程序出现的异常, 以保障代码可以正常运行,而不至于崩溃, 中断执行.该套机制包括如下几个关键字:
    try : try 试一试 , 表示该块代码可能出现异常, 我们试一试执行. try不能独立存在,必须有个伙伴
    catch: 抓捕,捕获, 捕获出现的异常, 你可以理解为摄像头, 抓拍出现违章的车辆. 北京某高速一个摄像头,创收上亿.
    finally: 最终的, 不管是否出现异常都执行的业务代码.
    throw: 手动抛出异常,
    throws: 声明一个方法抛出异常.

    try-catch

    包括三种情况:
    ①不出现异常, 正常执行

    package exception;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    public class Demo2 {
    
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		try {	
    			System.out.println("请输入第一个数:");
    			int num1 = input.nextInt();
    			System.out.println("请输入第二个数:");
    			int num2 = input.nextInt();
    			int num3 =  num1 / num2;
    			System.out.println(num3);
    		}catch(InputMismatchException me) {
    			//一般不写业务代码,只是显示一些提示信息
    			String message = me.getMessage();
    			System.out.println("出现异常:"+message);
    		}
    		input.close();
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    cache代码块不执行, 程序继续执行下面的业务代码.

    ②出现异常, catch可以捕获异常

    package exception;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    public class Demo2 {
    
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		try {	
    			System.out.println("请输入第一个数:");
    			int num1 = input.nextInt();
    			System.out.println("请输入第二个数:");
    			int num2 = input.nextInt();
    			int num3 =  num1 / num2;
    			System.out.println(num3);
    		}catch(InputMismatchException me) {
    			//一般不写业务代码,只是显示一些提示信息
    			String message = me.getMessage();
    			System.out.println("出现异常:"+message);
    		}
    		input.close();
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    输入字母,出现InputMismatchException异常, 出现的异常类型和捕获的异常类型一致,或者是捕获异常类型的子类. catch代码块执行.

    ③出现异常,catch捕获的异常和出现的异常不匹配

    package exception;
    
    import java.util.Scanner;
    
    public class Demo3 {
    
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		try {	
    			System.out.println("请输入第一个数:");
    			int num1 = input.nextInt();
    			System.out.println("请输入第二个数:");
    			int num2 = input.nextInt();
    			int num3 =  num1 / num2;
    			System.out.println(num3);
    		}catch(ArrayIndexOutOfBoundsException me) {
    			//一般不写业务代码,只是显示一些提示信息
    			String message = me.getMessage();
    			System.out.println("出现异常:"+message);
    			me.printStackTrace();
    		}
    		input.close();
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    代码中断执行, catch代码块不执行.

    try跟多个catch

    package exception;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    public class Demo5 {
    
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		try {	
    			System.out.println("请输入第一个数:");
    			int num1 = input.nextInt();
    			System.out.println("请输入第二个数:");
    			int num2 = input.nextInt();
    			int num3 =  num1 / num2;
    			System.out.println(num3);
    		}catch(ArithmeticException me) {
    			//一般不写业务代码,只是显示一些提示信息
    			String message = me.getMessage();
    			System.out.println("出现算术异常:"+message);
    			me.printStackTrace();
    		}catch(InputMismatchException e) {
    			System.out.println("输入的数据不一致, 请输入数字.");
    			e.printStackTrace();
    		}catch(NullPointerException e) {
    			System.out.println("出现控制针异常.....");
    			e.printStackTrace();
    		}
    		input.close();
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    以上写法可以捕获多种异常,一般为了安全起见, 有可能出现未知异常; 建议在最后加上Exception捕获异常 . Exception是所有异常的父类,意味着可以捕获所有异常. 但是他的位置一定要放在最后: 由特殊到一般.由子类到父类.

    package exception;
    import java.util.InputMismatchException;
    import java.util.Scanner;
    public class Demo6 {
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		try {	
    			System.out.println("请输入第一个数:");
    			int num1 = input.nextInt();
    			System.out.println("请输入第二个数:");
    			int num2 = input.nextInt();
    			int num3 =  num1 / num2;
    			System.out.println(num3);
    		}catch(ArithmeticException me) {
    			//一般不写业务代码,只是显示一些提示信息
    			String message = me.getMessage();
    			System.out.println("出现算术异常:"+message);
    			me.printStackTrace();
    		}catch(InputMismatchException e) {
    			System.out.println("输入的数据不一致, 请输入数字.");
    			e.printStackTrace();
    		}catch(NullPointerException e) {
    			System.out.println("出现控制针异常.....");
    			e.printStackTrace();
    		}catch(Exception e) {
    			System.out.println("出现异常: "+e.getMessage());
    		}
    		input.close();
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    异常处理的代码比业务代码还要多, 所以从jdk1.7引入一个写的写法;用来 简化异常处理的代码.

    package exception;
    import java.util.InputMismatchException;
    import java.util.Scanner;
    public class Demo7 {
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		try {	
    			System.out.println("请输入第一个数:");
    			int num1 = input.nextInt();
    			System.out.println("请输入第二个数:");
    			int num2 = input.nextInt();
    			int num3 =  num1 / num2;
    			System.out.println(num3);
    		}catch(ArithmeticException|InputMismatchException|NullPointerException e) {			   System.out.println("出现算术或者输入不匹配或空指针异常: "+e.getMessage());
    		}catch(Exception e) {
    			System.out.println("出现未知异常: "+e.getMessage());
    			e.printStackTrace();
    		}
    		input.close();
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    try-catch-finally

    比较完整的异常处理机制.
    finally表示最终的, 不管是否出现异常都执行的代码块.
    一般用在文件读写, 数据库访问; 不管是否出现异常都要执行: 譬如关闭文件流, 关闭数据库连接.

    package exception;
    
    import java.util.Scanner;
    
    public class Demo8 {
    
    	public static void main(String[] args) {
    		Scanner input =new Scanner(System.in);
    		try {	
    			System.out.println("请输入第一个数:");
    			int num1 = input.nextInt();
    			System.out.println("请输入第二个数:");
    			int num2 = input.nextInt();
    			int num3 =  num1 / num2;
    			System.out.println(num3);
    		}catch(Exception me) {
    			String message = me.getMessage();
    			System.out.println("出现异常:"+message);
    			me.printStackTrace();
    		}finally {
    			input.close();
    			System.out.println("===执行finally代码块==");
    		}
    		System.out.println("========执行后续代码=======");
    	}
    }
    

    try-finally

    finally 可以出现 0 次或 1 次.

    package exception;
    import java.io.File;
    public class Demo9 {
    	public static void main(String[] args) {
    		try {
    			File file =new  File("x:\\abc");
    		} finally {
    			System.out.println("===finally==");
    		}
    	}
    }
    

    throw和throws

    throw手动抛出异常: 我不处理异常, 抛给我的调用者,
    throws是声明方法抛出的异常: 可以提示方法的调用者,我的方法有可能出现异常, 里面埋有地雷,你要处理掉. throws的方法处理方式有两种:

    package exception;
    
    public class Product {
    
    	private double price;
    
    	public double getPrice() {
    		return price;
    	}
    	//throws Exception 声明抛出的异常
    	public void setPrice(double price) throws Exception {
    		if(price <0 || price >10000) {
    			//手动抛出一个异常
    			throw new Exception("价格不能小于0或者不能超过10000");
    		}else {
    			this.price = price;			
    		}
    	}
    }
    

    ①: 处理异常

    package exception;
    
    public class ProductTest {
    
    	public static void main(String[] args) {
    		//你看不到业务代码,只能看到方法的声明,这有可能引发异常
    		//最好是别人调用该方法的时候能够清楚的知道该方法会出现什么异常
    		Product pro = new Product();
    		try {
    			pro.setPrice(0);			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    ②:不处理, 继续抛出异常

    package exception;
    
    public class ProductTest2 {
    
    	public static void main(String[] args) throws Exception{
    		Product pro = new Product();
    		pro.setPrice(-1);
    	}
    }
    

    如果在main方法抛出异常, 直接由JVM处理.

    常见的异常

    package exception;
    
    import java.util.Date;
    
    public class Demo4 {
    
    	public static void main(String[] args) {
    		//ArrayIndexOutofBoundException//数组越界异常
    		//int [] data = new int[20];
    		//System.out.println(data[20]);
    		//java.lang.NullPointerException 空指针异常
    		//String str = null;
    		//System.out.println(str.length());
    		/*		 
    		 Exception in thread "main" 
    		 java.lang.ClassCastException:类型转换异常 
    		 util包下的date不能转换成sql包下的date
    		 java.util.Date cannot be cast to java.sql.Date
    		 at exception.Demo4.main(Demo4.java:15)
    		 */
    		Date date = new Date();
    		System.out.println( (java.sql.Date)date );
    		// IOException , 读写异常, FileNotFoundException文件没有找到异常
    		//SQLException 数据库异常
    		
    	}
    
    }
    //
    java.lang.Object 
    	java.lang.Throwable 
    		java.lang.Exception 
    			java.lang.RuntimeException 
    				java.lang.NullPointerException 
    
    
    java.lang.Object 
    	java.lang.Throwable 
    		java.lang.Exception 
    			java.lang.RuntimeException 
    				java.lang.IndexOutOfBoundsException 
    					java.lang.ArrayIndexOutOfBoundsException 
    

    自定义异常

    自定义异常: 公司的项目根据业务需要自定义业务异常类. 自定义异常类要继承Exception, 编写相应的构造方法.

    package exception;
    /**
     * 自定义业务异常: 出现异常之后可以方便的了解异常的类型.
    */
    public class PriceException  extends Exception{
    	private static final long serialVersionUID = 1L;
    	//①所有自定义异常类都要继承Exception
    	//②都要提供有参构造器: 提供异常信息
    	public PriceException(String msg) {
    		super(msg);
    	}
    }
    
    package exception;
    
    import java.io.IOException;
    
    public class Product {
    
    	private double price;
    
    	public double getPrice() {
    		return price;
    	}
    	//throws PriceException 声明抛出的异常
    	public void setPrice(double price) throws PriceException {
    		if(price <0 || price >10000) {
    			//手动抛出一个异常
    			throw new PriceException("价格不能小于0或者不能超过10000");
    		}else {
    			this.price = price;			
    		}
    	}
    	
    	protected void print() throws IOException {
    		System.out.println("xx");
    	}
    }
    // ======================================
    package exception;
    public class ProductTest {
    	public static void main(String[] args) {
    		Product pro = new Product();
    		try {
    			pro.setPrice(0);			
    		} catch (PriceException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    使用Log4j记录异常

    现在代码进行异常处理存在的问题是什么:
    异常不能保存 , 输出到控制台, 下次再运行控制台信息被删除. 最好的办法是可以把异常信息存储到文件中, 以方便查询错误信息. 日志记录. 可以输出到控制台,也可以保存到文件;
    使用是第三方的组件:log4j 主流的日志记录工具. 如何使用Log4j日志记录工具:
    ①: 添加log4j 的jar包 log4j-1.2.11.jar
    ②: 编写日志的配置文件 log4j.properties 属性文件
    ③: 在类中使用log4j记录日志.

    (1) 添加jar包
    在项目的目录下创建lib文件; 粘贴到该文件夹, 右键添加到构建路径.
    (2) log4j.properties

    ### 把日志信息输出到控制台  ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
    
    ### 把日志信息输出到文件 ###
    log4j.appender.file=org.apache.log4j.FileAppender
    log4j.appender.file.File=mylog.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l  %m%n
    
    ### 设置优先级别、以及输出源 ###
    log4j.rootLogger=error, stdout,file
    

    appender: 输出到目的地 ConsoleAppender 控制台, FileAppender 文件目的地 (输出目的地)
    stdout: 标准输出流 standard 标准 out输出
    layout, ConversionPattern 指定输出的格式和内容:
    %d date 日期
    %l location 位置
    %m message 异常的信息
    %n 换行
    日志的级别: debug < info < warn < error < fatal (致命的); 如果指定的error那么输出的日志信息是 >=当前级别的. 所以 debug是日志最低级别, 输出的日志也是最多的,

    (3)在类中使用Log4j记录日志信息
    ①创建log对象

    //创建日志记录对象
    private Logger logger = Logger.getLogger(Product.class);
    

    ​ ②调用相应级别的方法

    package exception;
    import java.io.IOException;
    import org.apache.log4j.Logger;
    public class Product {
    	//创建日志记录对象
    	private Logger logger = Logger.getLogger(Product.class);
    	private double price;
    	public Product() {
    		logger.debug("====创建商品对象=====");
    	}
    	public double getPrice() {
    		return price;
    	}
    	//throws PriceException 声明抛出的异常
    	public void setPrice(double price) throws PriceException {
    		logger.info("===设值商品价格====");
    		if(price <0 || price >10000) {
    			logger.error("===设值商品价格异常==="+price);
    			//手动抛出一个异常
    			throw new PriceException("价格不能小于0或者不能超过10000");
    		}else {
    			logger.info("===设值商品几个成功===");
    			this.price = price;			
    		}
    	}
    	
    	protected void print() throws IOException {
    		System.out.println("xx");
    	}
    }
    

    面试题讲解

    try-catch块中存在return语句,是否还执行finally块,如果执行,说出执行顺序
    try-catch- finally块中, finally块唯一不执行的情况是什么?

    package exception;
    
    class Calculator{
    	
    	// 除法运算
    	public int devide(int num1,int num2) {
    		int num3  = 0;
    		try {
    			num3 = num1 / num2;
    		} catch (ArithmeticException e) {
    			System.out.println("出现异常: " + e.getMessage());
    			return num3;
    		}finally {
    			num3 = 1000;
    			System.out.println("==finally==");			
    		}
    		System.out.println("================");
    		return num3;
    	}
    	
    }
    /**
     * 1. 正常情况,不出现异常 num3 = 1000; 代码自上而下正常执行
     * 2. 出现异常, num2传入0, finally代码块执行,但是不能改变返回的结果
     */
    public class Demo11 {	
    	public static void main(String[] args) {
    		Calculator c = new Calculator();
    		int result = c.devide(100, 0);
    		System.out.println("结果:" + result);
    	}
    }
    
    ide(int num1,int num2) {
    		int num3  = 0;
    		try {
    			num3 = num1 / num2;
    		} catch (ArithmeticException e) {
    			System.out.println("出现异常: " + e.getMessage());
    			return num3;
    		}finally {
    			num3 = 1000;
    			System.out.println("==finally==");			
    		}
    		System.out.println("================");
    		return num3;
    	}
    	
    }
    /**
     * 1. 正常情况,不出现异常 num3 = 1000; 代码自上而下正常执行
     * 2. 出现异常, num2传入0, finally代码块执行,但是不能改变返回的结果
     */
    public class Demo11 {	
    	public static void main(String[] args) {
    		Calculator c = new Calculator();
    		int result = c.devide(100, 0);
    		System.out.println("结果:" + result);
    	}
    }
    
    展开全文
  • java编程思想读书笔记

    2020-03-11 20:24:16
    think in java 读书笔记第一章 对象导论继承多态单根继承结构参数化类型对象的创建及生命周期异常处理并发编程第二章 一切都是对象对象的存储在类 第一章 对象导论 继承 继承分为两种,一种是直接替代的,子类重写...

    第一章 对象导论

    继承

    继承分为两种,一种是直接替代的,子类重写父类的方法,一种是子类添加新的方法,父类无法访问新添加的方法

    多态

    多态的三种应用:
    变量的多态:
    形参的多态: 如果一个方法的形参是一个父类,那么这个方法的参数也能传入它的子类。(向上转型),虽然传入的是子类,但是实际上已经向上转型成了父类,和之前的子类无关了。
    返回值的多态

    单根继承结构

    java中所有的类都继承于一个单一的基类object,这么做的好处是,对于垃圾回收器来说,所有对象都保证了其的数据类型,这就避免了无法确定对象类型而陷入僵局。对于异常处理,显得尤为重要

    参数化类型

    参数化类型机制就是创建一个只接受指定类型的对象的存入和取出的容器,例如ArrayList等。

    对象的创建及生命周期

    java中只有一种创建对象的方式,在堆上创建对象,通过new关键字实现,对象的生命周期由垃圾回收器决定,垃圾回收器知道对象何时不再被使用,并自动释放对象所占用的内存,通过java 的单根继承和对象创建方式的两大特性实现垃圾回收器的功能。

    异常处理

    异常处理与正常代码是并行运行的,当程序出错时,异常处理相当于提供了另外一条路,提供了一个将程序从错误状况恢复到正常的路径,使你不需要再退出程序。异常处理机制降低了修改错误的难度

    并发编程

    将问题切分成多个独立运行的部分,从而提高程序的运行效率,叫做并发,独立运行的部分叫做线程

    第二章 一切都是对象

    对象的存储在哪

    对象保存在堆中,基本类型的变量保存在堆栈中,堆栈内存分配速度要比堆的速度更快。

    类中有成员变量(字段)java给它默认值,和成员方法,方法中的变量叫局部变量(无默认值,未初始化直接报错)。

    static关键字

    当static作用于字段时,一个static对一个类只有一个存储空间,非静态的对每个对象有一个存储空间。static作用于方法时,区别只是在于能不通过对象调用方法

    第五章 初始化与清理

    用构造器确保初始化

    java通过构造器,来确保类的每个对象得到初始化,构造器通过方法重载,使其拥有相同名字但参数不同的方法

    展开全文
  • 【09-异常处理】

    2018-07-03 21:46:06
    定义异常类时通常需要提供两种构造器:一个是无参数的构造器;另一个 是带一个字符串参数的构造器,这个字符串将作为该异常对象的详细说明(也就是异常对象的 getMessage方法的返回值)。 异常链 •当...
  • java面试宝典

    2013-02-28 16:04:01
    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...
  • java 面试题 总结

    2009-09-16 08:45:34
    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    35.java除了8基本类型外,在虚拟机里还有,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...
  • 15.java 中 IO 流分为? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和 Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21....
  • java基础题 很全面

    2009-05-09 09:24:24
    5. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别? 23 简答题 23 1. 作用域public,protected,private,以及不写时的区别 23 2. BS与CS的联系与区别。 24 3. JDO是什么? 25 4. ...
  •  Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character ...
  • 15. java 中 IO 流分为? 7 16. BIO、NIO、AIO 有什么区别? 7 17. Files的常用方法都有哪些? 8 二、容器 8 18. java 容器都有哪些? 8 19. Collection 和 Collections 有什么区别? 9 20. List、Set、Map 之间...
  • Java语言支持两种多态:运行时多态和编译时多态。 题目8:a 程序如下: public class Demo extends Base { private int count; public Demo() {  System.out.println("A Demo object has been created"); } ...
  • java中,异常分为两种,运行时异常(也就是uncheckException)和已检查异常checkException,运行时异常包括平常遇到的各种异常,如空指针异常,数据格式异常等一系列异常,这种异常是可以不捕获的,可通过throws抛...
  • 千方百计笔试题大全

    2011-11-30 21:58:33
    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...
  • 7.5.2.时区 是符合人们习惯的一辅助计时方法,按照经线从东到西将绝对时间做了重新划分以方便全球不同经度的地区计时,现今全球共分为24个时区,并且规定相邻区域的时间相差1小时 本工程中举例了 Clock 、Instant...
  • 2.2.1 IP地址的编码分为哪俩部分? 2.2.2 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。 2.2.3 不能做switch()的参数类型是 2.2.4 int A[nSize],其中隐藏着若干0,其余...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    3.Oracle数据库的工作模式有哪两种?它们之间有有何区别? 答案: 在Oracle数据库中,数据库的操作模式分为专用服务器(DELICATED SERVER)模式和多线程服务器(MULTITHREADED SERVER)模式两种。其中,在专用服务器...
  • 全局Cookie,支持SharedPreferences和内存两种管理模式。 通用的网络请求异常监听,根据不同的状态码或异常设置相应的message。 全局的异常捕获,程序发生异常时不会崩溃,可跳入异常界面重启应用。 全局事件回调,...
  • 36、排序都有方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并...
  • 用户使用一般分为两种: 1、Maven构建 可以通过maven命令将lts的jar包上传到本地仓库中。在父pom.xml中添加相应的repository,并用deploy命令上传即可。具体引用方式可以参考lts中的例子即可。 2、直接Jar引用 ...
  • 仔细比较两种数据的差别,发现出现主机复位问题的数据中DSL板配置了MNT/MLT端口,但是没有做DSL端口之间的半永久数据。 于是在程序中不断加打印语句,通过后台的DBWIN调试程序跟踪,最后终于定位为:每当执行到...
  • 《Effective c++ 》

    千次下载 热门讨论 2013-02-25 22:13:11
    有人说c++程序员可以分为两类,读过effective c++的和没读过的。世界顶级c++大师scott meyers成名之作的第三版的确当得起这样的评价。当您读过这本书之后,就获得了迅速提升自己c++功力的一个契机。 在国际上,本书...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

java异常类型分为哪两种

java 订阅