1.static关键字【重点】
static中文意思:静态的
static是和对象无关的。
简单介绍:
1生活的角度来理解静态的资源公共的资源的都属于静态的东西对象可以使用静态的资源,但是和对象无关
厕所里面直饮机 就是静态资源
对象.name
2Java中的静态
1.修饰成员变量 静态属性
2.修饰成员方法 静态方法
3.修饰代码块 静态代码块
package com.qfedu.a_static;
class Person {
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();
}
}
1static修饰的变量叫静态变量
语法格式:static 数据类型 变量名;
注意事项:
1.使用static修饰的变量叫静态变量
2.代码中对象还没有创建的时候,如果加载了类,static修饰的属性已经存在了,和对象没有关系。
package com.qfedu.a_static;
class Person {
String name;
int age;
static String country;
}
public class Demo2 {
public static void main(String[] args) {
Person s = new Person();
s.name = "李白";
s.age = 23;
Person.country = "中国";
//The static field Person.country
//should be accessed in a static way
System.out.println(s.country);//中国
System.out.println(Person.country);//in a static way
s.country = "PRC";
System.out.println(Person.country);//PRC
}
}
2:修饰成员方法:
语法格式:public static 返回值 方法的名字 (参数列表) {}
调用方法:类.方法名字();
package com.qfedu.a_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("嘻嘻");
}
}
3:修饰代码块
语法格式:static{
}
package com.qfedu.a_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();
}
}
只要这个类加载,那么静态代码块一定会执行
执行顺序: 静态代码块-》构造代码块-》构造方法。
Java中异常:
程序中在运行的时候,发生了不可预期的事件。它阻止程序正常的往下执行。这就是异常数组下标越界的异常,是让程序自生自灭还是修改。修改Java提供了非常优秀的处理机制,异常处理机制。都是封装好的语法格式。
2. Java代码中异常处理机制:
Java中给咱们封装好了一个类 Throwable ,这个类是专门处理Java中错误和异常的Java是面向对象的。Throwable 这个类系统给咱们提供好的一个类,专门处理错误和异常的类
异常【重点】代码有问题:
当代码出现了异常,Java给咱们提供了两种解决方案
1.异常的捕捉
2.抛出异常
3.异常的捕捉在程序运行过程中,有的代码可能难免会出出现异常。如果没有出现异常,正常的执行。如果出现异常对异常进行捕捉。
语法格式:
try {
可能出现异常的代码
} catch (异常对象) {
//针对于上面异常的处理方案
}
//执行流程:如果try里面的代码没有出现异常,跳过catch执行下面的代码
//如果try里面的代码出现了异常,会走catch里面的代码
异常的抛出
在代码出现异常的地方抛出异常。
捕捉异常对异常进行处理,抛出异常的话就是破罐子破摔。有啥用?告知当前调用者此处有异常,需要小心一点。
如果抛出异常:代码从发生异常的地方终止不再往下走了。
使用两个关键字:
throw:在方法中抛出异常。自己可以抛一个异常
throws:在方法的声明处去写,告知调用者当前有异常
package com.qfedu.b_exception;
public class Demo6 {
public static void main(String[] args) throws Exception{
test(2, 0);
}
//throws 名词 告知调用者当前方法代码有异常
public static void test (int a, int b) throws Exception{
if (b == 0) {
//使用throw抛出一个异常对象 自己造的一个异常
//thorw 抛的动作
throw new Exception("b不能等于0");
}
System.out.println("嘻嘻哒");
}
}
package com.qfedu.b_exception;
public class Demo7 {
public static void main(String[] args) {
test(1);
}
public static void test (int a) throws NullPointerException{
if (a == 0) {
//运行时异常
throw new NullPointerException("a不能为0");
}
System.out.println("吃完饭");
}
}