首页 > 编程语言 >Java--static 关键字小研究

Java--static 关键字小研究

时间:2022-11-11 13:02:47浏览次数:40  
标签:InnerClass Java -- class static 修饰 new public


一、用static修饰的静态代码块:

class Demo {
{
System.out.println("1、构造块。");
}
static{
System.out.println("0、静态代码块。");
}
public Demo() {
System.out.println("2、构造方法。");
}


}
public class Demo01{
static{
System.out.println("在主方法所在类中定义的代码块。");
}
public static void main(String args[]) {
new Demo();
new Demo();
new Demo();
}
}

运行如下:

0、静态代码块。
1、构造块。
2、构造方法。
1、构造块。
2、构造方法。
1、构造块。
2、构造方法。

从程序的运行结果中可以发现,静态代码块会优先于主方法执行,而在类中定义的静态代码块会优先于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次。

 

二、用static修饰类:

Java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类(见如下代码)

class OuterClass {   
public static class InnerClass{
InnerClass(){
System.out.println("============= 我是一个内部类'InnerClass' =============");
}
}
}

public class TestStaticClass {
public static void main(String[] args) {
// 不需要new一个OutClass
new OuterClass.InnerClass();
}
}

运行如下:

============= 我是一个内部类'InnerClass' =============

 

如果没有用static修饰InterClass,则只能按如下方式调用:

class OuterClass {   
public class InnerClass{
InnerClass(){
System.out.println("============= 我是一个内部类'InnerClass' =============");
}
}
}
public class TestStaticClass {
public static void main(String[] args) {
// OutClass需要先生成一个实例
OuterClass oc = new OuterClass();
oc.new InnerClass();
}
}

所以说:有static修饰的内部类,外部类可以在不实例化的时候调用内部类的方法,没有static修饰的时候,外部类必须先实例化然后再调用。

喜欢的童鞋可以关注我!

标签:InnerClass,Java,--,class,static,修饰,new,public
From: https://blog.51cto.com/u_15866446/5844734

相关文章

  • 蛋疼的Caused by: java.lang.ClassNotFoundException
    开发中最长遇到的错误提示,遇到这种错误提示,一般可能有:1.忘记在AndroidManifest中配置,这个很好解决,在里面配置一下就行了。2.更常见的问题是在引入外包时出现这个问题,怎么解......
  • Android数据库学习123
    我个人感觉安卓自带的数据库用的不是太多的,毕竟现在很多应用都直接和服务器数据库进行交互,或者直接API获取一些接口的数据,但是不可否认自带的数据库还是有一些作用的,所以我......
  • Android实战--解析稍复杂JSON数据DEMO
    废话不多说,直接上代码,布局文件:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_wid......
  • Android实战--语音合成TTS
    接着上一节讨论的问题,本DEMO中会用到TTS语音合成,我们下面介绍一个同样原理的小例子看一下布局文件很简单: <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:and......
  • Android实战--小DEMO(JAVA关键字学习)一
    学习技术最好的方式就是实战,看书看不到的东西太多了,实际操作时会碰到各种书本里提不到的问题,解决这些问题会迅速提升你的能力,你是一个solider,最好成长的方式就是实战。下面......
  • 最短路板子
    floyedO(n^3) f[i][j]=min(f[i][j],f[i][k]+f[k][j]) memset(f,inf,sizeof(f));for(i=1;i<=m;i++)cin>>x>>y>>z,f[x][y]=f[y][x]=z;for......
  • P8817 假期计划 Sol
    看到数据范围,很容易想到平方。由于是双向边,所以很容易想到其实四个点可以被拆成两部分,两部分本质一样,可以一起处理。考虑枚举中转点\(x,y\),可以想到预处理与\(x\)距离......
  • Android错误之HAX is not installed on the machine(MAC OS)
    为了更好的工作和学习,最近新入手一台MacBookpro。在装Androidstudio时遇到如下问题:解决办法如下:点击:https://software.intel.com/en-us/android/articles/intel-hardware......
  • 一道zhangying机试题
    功能很好实现,但是用到的设计模式没有搞清楚,有一句话没太懂:每个调节项目调节时触发的动作会修改,不知道是什么含义,有明白的童鞋指导一下,选用何种设计模式。下面看一下功能代码......
  • 学生之家-6道练习题
    让用户输入一个数判断其是奇数还是偶数并把结果输出输入一个溶液的ph值试判断该溶液是酸性还是碱性或是中性溶液并把结果输出(常温25℃条件下)给定一个年份判断是否是......