首页 > 编程语言 >Java学习之:静态初始化块、包、参数传递机制

Java学习之:静态初始化块、包、参数传递机制

时间:2022-10-03 21:35:57浏览次数:51  
标签:初始化 Java String void 参数传递 static println public name

关键字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

Java学习之:静态初始化块、包、参数传递机制_java

输入包的名称(域名倒写加上模块名)即可

Java学习之:静态初始化块、包、参数传递机制_java_02

JDK中常见的包:

Java学习之:静态初始化块、包、参数传递机制_静态方法_03

导入包

如果我们需要其他的包中的类,需要使用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

标签:初始化,Java,String,void,参数传递,static,println,public,name
From: https://blog.51cto.com/u_15623229/5730486

相关文章

  • Java对象序列化和反序列化
    Java类的序列化和反序列化序列化:指将对象转换为字节序列的过程,也就是将对象的信息转换成文件保存。反序列化:将字节序列转换成目标对象的过程,也就是读取文件,并转换为对象。几......
  • Java项目打成镜像
    前言官方只有java8的docker镜像,如果我们的项目使用java11开发的,那么用java8的镜像打包运行会报错那么我们部署java项目有两种方式如:1.将项目打成war包部署到tomcat容器,2.自......
  • Java中Map.Entry
    Map<String,String>map=newHashMap<String,String>();map.put("1","value1");map.put("2","value2");map.put("3","value3");遍历map方式1:Ma......
  • java BIO
    packageIO;//文件、数组、管道、基本数据类型、缓冲、打印、对象序列化/反序列化,以及转换等​importjava.io.*;​/***操作文件{*  1.文件字节流:FileInpu......
  • JAVA学习前准备
    电脑常用快捷键Ctrl+C:复制Ctrl+V:粘贴Ctrl+A:全选Ctrl+X:剪切Ctrl+Z:撤销Ctrl+S:保存Alt+F4:关闭窗口Shift+delete:永久性删除文件win键+R:打开运行win键+E:打......
  • java工厂方法模式学习
    总结;定义一个接口,多个实现类,一个工厂方法publicinterfaceHuman{voideat();voidsleep();}publicclassWhiteHumanimplementsHuman{@Overr......
  • java---回顾方法的定义和调用
    方法的回顾和调用packagecom.oop.demo;​importjava.io.IOError;importjava.io.IOException;​//return代表方法结束,返回一个结果//下方就是一个类publicclassDemo01......
  • java网络编程--3 TCP
    java网络编程--3TCP1.6、TCP客户端连接服务器Socket发送消息packagecom.ssl.lesson02;importjava.io.IOException;importjava.io.OutputStream;importja......
  • 肖sir__Java中模块__11
       一、random模块1、定义 random :用于产生一个随机数2、使用步骤:(1)导包(2)创建对象(3)获取随机数   案例:   importjava.util.Random;......
  • 第一个Java程序hello world
    day4:我的第一个JAVA程序HelloWorldpublicclassMain{publicstaticvoidmain(String[]args){System.out.println("hello,world");}}注意事项......