Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入

static 关键字

在类中,用static声明的成员变量静态成员变量,也称为类变量类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:

  1. 为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。

  2. 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!

  3. 一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。)

  4. 在static方法中不可直接访问非static的成员。

核心要点:

            static修饰的成员变量和方法,从属于类。

            普通变量和方法从属于对象的。

static关键字的使用


public class User2 {
	int id;
	String name;
	String pwd;
	static String company="北京尚学堂";
	public User2(int id,String name) {
		this.id=id;
		this.name=name;
	}
	public void login() {
		printCompany();
		System.out.println(company);
		System.out.println("登录:"+name);
	}
	public static void printCompany() {
		//login();  //静态成员调用非静态成员,编译将会报错
		System.out.println(company);
	}
	public static void main(String[] args) {
		User2 u=new User2(101,"止小兮");
		u.login();
		User2.printCompany();
		User2.company="苍小凌有限公司";
		User2.printCompany();
		u.login();
	}
}


静态初始化块

构造方法用于对象的初始化!静态初始化块,用于类的初始化操作!在静态初始化块中不能直接访问非static成员

静态初始化块执行顺序:

             1. 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。

        2. 构造方法执行顺序和上面顺序一样!!

static初始化块

public class User3 {
	int id;
	String name;
	String pwd;
	static String company;
	static {
		System.out.println("执行类的初始化工作");
		company="苍小凌有限公司";
		printCompany();
	}
	public static void printCompany() {
		System.out.println(company);
	}
	public static void main(String[] args) {
		User3 u3=new User3();
	}
}


  参数传值机制

       Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。 也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。

基本数据类型参数的传值

  传递的是值的副本。 副本改变不会影响原件。

引用类型参数的传值

  传递的是值的副本。但是引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。

多个变量指向同一个对象

public class User4 {
	int id;
	String name;
	String pwd;
	public User4(int id,String name) {
		this.id=id;
		this.name=name;
	}
	public void testParameterTransfer01(User4 u) {
		u.name="止小兮";
	}
	public void testParameterTransfer02(User4 u) {
		u=new User4(200,"苍小凌");
	}
	public static void main(String[] args) {
		User4 u1=new User4(100,"瑾修");
		u1.testParameterTransfer01(u1);  //传的是u1的地址
		System.out.println(u1.name);  //结果为:止小兮
		
		u1.testParameterTransfer02(u1);  
		System.out.println(u1.name);  //结果为:止小兮
	}
}


 

包机制是Java中管理类的重要手段。 开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。 包对于类,相当于文件夹对于文件的作用

package实现对类的管理,package的使用有两个要点:

  1. 通常是类的第一句非注释性语句

  2. 包名:域名倒着写即可,再加上模块名,便于内部管理类。

注:1. 写项目时都要加包,不要使用默认包

      2. com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者是前者的一部分。

JDK中的主要包 


导入类import

如果我们要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名。import后,便于编写代码,提高可维护性。

注:1. Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。

  2. 如果导入两个同名的类,只能用包名+类名来显示调用相关类

导入同名类的处理

import java.sql.Date;
import java.util.*;//导入该包下所有的类。会降低编译速度,但不会降低运行速度
public class Test6 {
	public static void main(String [] args) {
		Date now;//这里指的是Java.sql.Date
		java.util.Date now2= new java.util.Date();
		System.out.println(now2);  //因为 java.util.Date 与 java.sql.Date 类同名,需要完整的路径
		Scanner input =new Scanner(System.in);  //java.util包的非同名类不需要完整的路径
	}
}


 静态导入

静态导入(static import)是在JDK1.5新增加的功能,其作用是用于导入指定类的静态属性,这样我们可以直接使用静态属性

静态导入的使用

package cn.sxt;
//以下两种静态导入的方式二选一即可
import static java.lang.Math.*;
import static java.lang.Math.PI;
public class Test2 {
	public static void main(String [] args) {
		System.out.println(PI);
		System.out.println(random());
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值