Java学习笔记6

关键字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
0.6648739571605747
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值