关键字static和静态初始化块
static
普通变量和方法从属于对象,而static修饰的成员变量和方法从属于类。
静态方法:被static修饰的方法叫做静态方法,又被称为类方法。非static的方法是对象方法(或称为实例方法)。
public class User2 {
int id;
String name;
String pwd;
static String company = "xxx";
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, "123");
User2.printCompany();
User2.company = "132456";
User2.printCompany();
}
}
非静态方法可以调用静态方法,静态方法不可以调用非静态方法
静态初始化块
前面构造方法是用于对象的初始化。静态初始化块用于对类的初始化,在静态初始化块中不能直接访问非static成员。
public class User3 {
int id;
String name;
String pwd;
static String company;
static {
System.out.println("执行类的初始化工作");
company = "xxx";
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="2";
}
public void testParameterTransfer02(User4 u){
u = new User4(200,"3"); //新建一个对象 u地址改变
}
public static void main(String[] args) {
User4 u1 = new User4(100, "1");
u1.testParameterTransfer01(u1);
System.out.println(u1.name);
u1.testParameterTransfer02(u1);
System.out.println(u1.name);
}
}
结果:
2
2
包
包类似于文件夹,通过包很容易解决类重名的问题。包在写项目时十分重要。
在IDEA中新建包的方法:
在src目录上单击右键,选择new->package
输入包的名称(域名倒写加上模块名)即可
JDK中常见的包:
导入包
如果我们需要其他的包中的类,需要使用import导入包。
Java会默认导入java.lang包下所有的类,可以直接使用;
如果导入两个同名的类,只能用包名+类名来显示调用相关类;
静态导入
静态导入(static import)是在JDK1.5新增加的功能,其作用是用于导入指定类的静态属性,这样我们可以直接使用静态属性。
package com.oo;
//以下两种静态导入的方式二选一即可
import static java.lang.Math.*;//导入Math类的所有静态属性
import static java.lang.Math.PI;//导入Math类的PI属性
public class Main{
public static void main(String [] args){
System.out.println(PI);
System.out.println(random());
}
}
结果:
3.141592653589793标签:初始化,Java,String,void,参数传递,static,println,public,name From: https://blog.51cto.com/u_15623229/5730486
0.6648739571605747