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.Datejava.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());}
}
Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入相关推荐
- java中初始化块、静态初始化块和构造方法
(所谓的初始化方法init()是另一回事, 在构造方法之后执行, 注意不要混淆) 在Java中,有两种初始化块:静态初始化块和非静态初始化块.它们都是定义在类中,用大括号{}括起来,静态代码块在大括号 ...
- 浅谈 JAVA中静态初始化块和非静态初始化块的区别
众所周知在JAVA编程语言中有两种初始化块: 静态初始化块 非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义: static{} 执 ...
- java静态初始化块的作用_Java 中的 static 使用之静态初始化块
方法不在main函数里面不会被执行吗? public class HelloWorld { String name; // 声明变量name String sex; // 声明变量sex static ...
- java调用类中的静态变量时类中静态代码块什么情况会执行以及类的初始化问题?
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段. 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Jav ...
- android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...
1.设置屏幕的亮度: WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=1.0f; getW ...
- Java讲课笔记12:static关键字
文章目录 零.本讲学习目标 1.掌握静态变量的使用 2.掌握静态方法的使用 3.掌握静态代码块的使用 一.static关键字的用处 二.静态变量 1.静态变量的定义 2.静态变量的内存分配示意图 3. ...
- Java常见面试题—”static”关键字有什么用?
static作用: 1.static修饰方法 static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对 ...
- 关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍
关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍 对于主动请求一个类时,JVM首先会将该类加载到内存中,先初始化该类的静态成员变量和静态初始化块. 主动请求一个类的情形: a.调用类A的 ...
- java面向对象-------静态初始化块
1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...
最新文章
- 理解Meta Learning 元学习,这篇文章就够了!
- 吐槽 | 聊一聊公众号的那些事
- tableau可视化数据分析60讲(二)-tableau入门篇之各模块功能介绍
- How to allow/block PING on Linux server – IPTables rules for icmp---reference
- cad vba 打开文件对话框_CAD文件损坏?无法打开?别急,这八种方法或许能帮到你...
- python3安卓版安装教程_安装python3的详细教程
- ie6 下最佳 PNG透明方案【转】
- 12306 的技术扒光在你面前,100 万人如何抢 1 万张票
- (计算机显示器主屏幕区域)桌面造句,部编版《语文园地四》教学反思模板(11页)-原创力文档...
- 为什么Word打印预览的跟实际的不一样呢
- Telink blt_soft_timer 改进
- 电子学会2022年9月青少年软件编程(图形化)等级考试试卷(四级)答案解析
- 科来kelai工具的安装与使用-改包回放包工具
- 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码)
- 利用sql profile固定执行计划加快OGG同步
- C语言函数递归调用实验报告,C语言函数的递归和调用实例分析
- Linux中配置Aria2 RPC Server
- win10,win11后在cmd命令行输入python自动调用微软应用商店
- 我们为什么需要光纤配线架
- 漫画:二叉树系列 第五讲(BST的删除)
热门文章
- 消息队列rabitMq
- 过滤器解决Struts2重定向漏洞
- SQL2008错误:当 MUST_CHANGE 为 ON (开)时,不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)。...
- 步骤详解安装Apache web服务器
- Android 系统搜索框(有浏览记录)
- 一个非常棒的jQuery 评分插件--好东西要分享
- Pat乙级1089 狼人杀-简单版
- Uber将向公众开放出行大数据:希望能更好规划城市出行
- Javascript的闭包及其使用技巧实例
- ARC下的所有权修饰符