栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

static,异常 初窥

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

static,异常 初窥

1. static关键字【重点】

公共的资源 都属于静态的东西

对象可以使用静态的资源,但是和对象无关

1.2 Java中的静态
  1. 修饰成员变量 静态属性 静态的属性 和对象无关

  2. 修饰成员方法 静态方法

  3. 修饰代码块 静态代码块

class Man {
	static String name;//静态的属性  和对象无关的
	//静态方法
	public static void eat () {
		System.out.println("吃饭喝酒");
	}
	//静态代码块
	static {
		System.out.println("嘻嘻");
	}
}
public class Demo1 {
	public static void main(String[] args) {
		//咋使用 类.静态的属性
		Man.name = "狗蛋";
		System.out.println(Man.name);
		//使用  类.静态方法名字()
		Man.eat();
	}
}
1.2.1 static修饰成员变量

静态成员变量:

static String name;

语法格式:

static 数据类型  变量名;

注意事项:

1.使用static修饰的变量叫静态变量

2.代码中对象还没有创建的时候,如果加载了类,static修饰的属性已经存在了,和对象没有关系。

class Person {
	String name;
	int age;
	static String country;
}
public class Demo2 {
	public static void main(String[] args) {
		Person sb = new Person();
		sb.name = "张三";
		sb.age = 23;
		Person.country = "中国";
		//The static field Person.country 
		//should be accessed in a static way
		System.out.println(sb.country);//中国
		System.out.println(Person.country);//in a static way
		sb.country = "PRC";
		System.out.println(Person.country);//PRC
	}

}
1.2.2 static修饰成员方法

静态方法

语法格式:

public static 返回值 方法的名字 (参数列表) 

调用静态方法:

类.方法名字();

class Dog {
	public void eat () {
		System.out.println("普通的成员方法");
	}
	public static void sleep () {
		System.out.println("睡吧不用看家了");
	}
}
public class Demo3 {
	public static void main(String[] args) {
		Dog.sleep();
		//Dog.eat();只能拿对象来调用这个方法eat
		Demo3.test();
	}
	public static void test () {
		System.out.println("嘻嘻");
	}

}
1.2.3 static修饰代码块

语法格式: 静态代码块

static {
    语句体
}

只要这个类加载,那么静态代码块一定会执行

且执行顺序为: 静态代码块——>构造代码块——>构造方法

class Cat {
	public Cat () {
		System.out.println("无参构造方法");
	}
	{
		System.out.println("构造代码块");
	}
	static {
		System.out.println("静态的代码块");
	}
}
public class Demo4 {
	public static void main(String[] args) {
		Cat cat = new Cat();
	}

}
2. 异常

2.1生活中的异常

2.2 Java中的异常

程序在自上而下执行的时候,发生了不可预期的事件,这个事件阻止程序的运行。这就是异常。

例如:数组下标越界 类转换异常

Java给咱们封装很多的异常类,并且提供很优秀的异常处理机制。

Java提供了一个类 Throwable

新学一个类,自学会看API文档

https://www.matools.com/api/java8
2.3 Throwable类

构造方法:

Throwable()构造一个新的可抛出的 null作为其详细信息。
Throwable(String message)构造一个具有指定的详细消息的新的throwable。

方法:

StringgetMessage()返回此throwable的详细消息字符串。
voidprintStackTrace()将此throwable和其追溯打印到标准错误流。
StringtoString()返回此可抛出的简短描述。
public class Demo1 {
	public static void main(String[] args) {
		System.out.println("嘻嘻");
		System.err.println("哈哈");
		Throwable throwable = new Throwable();
		System.out.println(throwable.getMessage());
		Throwable throwable2 = new Throwable("哈哈,我傻逼了");
		System.out.println(throwable2.getMessage());
		
		throwable2.printStackTrace();
		//java.lang.Throwable: 哈哈,我傻逼了
		//告知了这个错误信息
		System.out.println(throwable2.toString());
	}

}
2.4 错误和异常

Throwable 下面有两个子类 一个叫Error 一个叫Exception

Error:是代表JVM本身的错误,咱们程序员是通过代码解决不了的。

Exception: 异常,代表程序在运行过程中,发生了不可预期的事件。可以使用Java来出来,让他继续执行下去。

异常分为两种:

编译时异常:

FileNotFoundException

SQLException

ClassNotFoundException

InterruptException

运行时异常:

数组下标越界 ArrayIndexOutOfBoundException

类转换异常 ClassCastException

空指针异常 NullPointerException

2.5 异常【重点】

代码有可能会出现异常。Java给咱们提供了两种解决方案

1.异常的捕捉

2.异常的抛出

2.5.1 异常的捕捉

在程序运行过程中,代码难免有可能会遇到异常。如果没有异常,代码正常执行。

如果有异常,就捕捉异常

语法格式:

try {
    有可能出现异常的代码
} catch (异常对象) {
    //针对于面异常的处理方案
}

public class Demo2 {

	public static void main(String[] args) {
		test(3, 0);
	}
	public static void test (int a, int b) {
		int ret = 0;
		try {
			//有可能个出现异常的代码
			 ret = a / b;
		} catch (ArithmeticException e) {
			System.out.println("123");
			//打印错误信息
			System.out.println(e.getMessage());
		}
		//即使代码有异常,通过捕捉以后。是不会影响程序的接着执行的代码的
		System.out.println(ret);
		System.out.println( 4 + 4);
	}
}
2.5.2 异常的抛出

在代码出现异常的地方进行异常的抛出

如果异常的抛出的话,一旦发生异常,从出现异常的地方会终止代码

使用两个关键字:

​        throw: 在方法中抛出一个异常。自己造一个错

​        throws:  在方法的声明处书写,告知当前调用者,此处有异常。要小心        

import java.io.FileNotFoundException;

public class Demo8 {
	public static void main(String[] args) throws Exception{
		test(0);
		Thread.sleep(1000);
	}
	public static void test (int a) throws FileNotFoundException{
		if (a == 0) {
			//编译时异常
			throw new FileNotFoundException();
		}
		System.out.println("jvm xixi");
	}
}

2.6 自定义异常

Java给咱们提供了很多的异常对象,但是有的时候还是满足不了现实生活的需求,我自己造异常对象。

继承Exception

需求:

如果是单身 抛出一个异常 单身异常类

import java.util.Scanner;

public class Demo11 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int score = scanner.nextInt();
		try {
			test(score);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
	public static void test (int score) throws Exception {
		if (score > 100 || score < 0) {
			throw  new Exception("输入的整数有误的。。。");
		}
		if (score >= 90 && score <= 100) {
			System.out.println("优秀");
		} else if (score >= 80) {
			System.out.println("良好");
		} else if (score >= 70) {
			System.out.println("及格");
		} else {
			System.out.println("叫家长。。。");
		}
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032898.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号