【JAVA】对static修饰符的入门理解(不断总结,更新中......)。
2023-09-11 14:14:57 时间
一、static的用途
1、为什么要用static修饰【静态变量】?
首先,是公共性,定义一次,大家都可以用。Static变量是在类的第一行声明变量,并不在方法或函数里,也不是放在main里,因为,这样,它才能被所有的方法和函数调用,一般用于修饰类的属性和方法。
举例:计数用(获取用户的PV访问量),比如:你打开一个APP,系统可以计算并记录你访问每一个页面的次数。一进入系统,就可以用Static声明变量,比如:public static int m_click=0; 每访问一个页面,在页面的代码中让这个变量加1。
其次,是减少变量的重复定义,另外,调用也比较方便,不需要再定义和声明。
最后,列出了其他文章关于static的用法:
- 修饰变量,把它变成类的成员,大家可以共享使用。
- 修饰方法,可以直接用"类.方法名()”来调用。
- 修饰代码块,把多个类成员放在一起初始化,注意:每次用NEW声明对象时,就自动执行,但只会执行一次。
- 静态导包,把类的方法直接导入到当前类里,可直接用“方法名()”调用类。
package HELLO;
public class helloword {
public static void main(String[] args) {
bian uuu=new bian();
System.out.println("声明再调用,麻烦而且还多占用内存:"+uuu.m);
System.out.println("直接调用显示i的值:"+bian.m);
}
}
二、用static修饰【静态变量】
主要用于一个类(.java文件内)中的应用,一般在第一行。其实,刚开始,我一直有一个疑问,那不加static不是也能定义变量吗?为什么要加?后来测试发下,如果不加static,在static的静态方法或函数中是不能调用的。你看一看下面的例子就知道了。
package HELLO;
public class helloword {
// 注意:用 static都 是在类的最前面,这样可以被下面的方法和函数调用,造成不要放在方法里。
static int i=0; // static静态变量
public int u=0; // 不带static的变量
void shuxue() // 在这个方法中可以调用i,也可以调用u,没毛病。
{
i++;
u++;
System.out.print("小类!"+i);
}
// 注意,main()前面有static,但是他不能调用没有加static的变量u,但可以调用i,
public static void main(String[] args) {
i++; // 调用加了static的i没毛病。
// u++; 但是u不行,会报错的。
System.out.print("显示i的值:"+i);
}
}
三、用static修饰【静态方法】
1、实例,直接调用静态方法
package Book;
public class book {
public static void print() // 显示内容
{
System.out.println("水浒传:66元");
}
public static void main(String[] args)
{
book.print(); // 直接调用,在其他类中也是直接调用的。
}
}
四、用static修饰【代码块】
package Book;
public class book {
// ================== 静态代码块
static
{
System.out.println("类初始化块");
int age = 20;
}
public static void print() // 显示内容
{
System.out.println("水浒传:66元");
}
public static void main(String[] args)
{
book m_book1= new book(); // 只要对象化类,就自动执行static的代码块。
book m_book2= new book(); // 但是,只执行一次。
}
}
相关文章
- 《Java 并发编程的艺术》迷你书
- Centos下配置Java运行环境
- [java] - 获取上传到服务器上的文件路径
- java学习笔记16--I/O流和文件
- Java实现 蓝桥杯 算法提高 欧拉函数(数学)
- Java实现 LeetCode 600 不含连续1的非负整数(有些题为了避免使用位运算可以换成动态规划)
- Java实现蓝桥杯VIP算法训练 数组逆序排列
- java实现 洛谷 P1425 小鱼的游泳时间
- Java实现蓝桥杯二项式的系数规律
- (转载)java多态(2)-------Java转型(向上或向下转型)
- java struts2入门学习--防止表单重复提交.OGNL语言学习
- java struts2入门学习---自定义类型转换
- [Java Spring] Spring Annotation Configuration Using XML
- java中的==、equals()、hashCode()源码分析
- java.lang.OutOfMemoryError: Java heap space 解决方法
- 快学Java SE8--Java8函数式编程(二)
- 【学习总结】java数据结构和算法-第一章-内容介绍和授课方式
- Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
- Java中的流程控制(分支结构和循环结构)
- 【项目实战】Java事件处理机制(JavaFX + Swing)入门介绍
- 【java】Java 包(package)
- java中的transient 详细总结Java中transient关键字 对象写出流ObjectOutputStream 对象写入流ObjectInputStream
- JAVA运行java程序
- Java开发入门到精通之Java的数据库访问
- 【java】Java并发编程系列- volatile关键字(高并发中特实用哦)
- 【java】Java IO体系总览