java第五章:面向对象(oop)之 static、package、import关键字

java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下: 
1、首先加载要创建对象的类及其直接与间接父类。
2、在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。
3、需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行。
4、最后执行构造器,构造器执行完毕,对象生成。
上面四段话意思就是静态变量(全局变量)创建时间要早于new对象(成员变量)的时间。
所以静态的方法,不能访问非静态的属性和方法;反之,非静态的方法可以访问静态的属性和方法;

static 关键字:可以修饰方法(静态方法)或者成员变量(全局变量),不能用来修饰局部变量(只能用final修饰)
全局变量和成员变量的区别:
1.在内存中的保存位置不同:成员变量保存在堆中,全局变量保存在方法区;
2.保存份数不同:成员变量,每new出来一份都要分配空间,保存多份;全局变量只保存一份;
3.创建时间不同:成员变量,new的时候,才创建;全局变量,类加载时就创建;
4.访问方式不用: 成员变量,用对象名.属性,对象名.方法名();,可以使用this关键字;
全局变量,推荐 用类名.属性,类名.方法名();当然也可以
用对象名.属性,对象名.方法名(),可以使用this关键字;

(普通)代码块:单独在{}中写的代码;new的时候,才会被执行,不new不执行,new几次执行几次;
执行顺序在构造器之前

(static)代码块:static{} 类加载的时候就会被执行,不new也执行。只会执行1次。
 执行顺序:静态代码块>普通代码块>构造器>普通方法或静态方法;
静态的方法或者代码块,只能访问静态的成员变量,不能访问非静态的属性和方法;
反之,非静态的方法或者代码块可以访问的静态或非静态属性和方法;
package关键字:包是对存放的数据分门别类,避免同级目录的命名冲突
声明包,语法:package 包名,eg:package cn.zzsxt.demo;必须放在类的第一行

常用的包:
java.lang包:java的核心类库(String , System,Math....);
java.util包:java工具类(Scanner,Arrays)
java.io包:i(input)/o(output)java中流的输入和输出相关类库;
java.sql包:提供操作数据库的相关类库
java.net包:网络编程相关类库
java.text包:国际化或格式化输出相关类库

import关键字:需要访问不同包下的其他包中的类时,需要导包;
方式1:import 包名.*---导入该包下的所有类;
方式2:import 包名.类名---导入该包下的具体类(推荐使用)
方式3:不使用import关键字,使用全类名书写代码,eg: java.util.Scanner input = new java.util.Scanner(System.in);

静态导入:JDK 1.5之后的新特性,在导入某包下的静态属性或者方法时,可以是用静态导入;
语法:import static 包名.类名.*或者import static 包名.类名.属性名/方法名;然后代码书写的时候就可以省略类名;


原文地址:https://www.cnblogs.com/SXTzhaopengda/p/6944021.html