对JAVA的static深刻理解(结合C语言的思考)
public class statictest {
String X = "我是非静态变量";
static int butterfly =0;
static String staticX = "我是静态变量" ;
static String staticZ="我也是静态变量";
statictest(){
System.out.println("我是构造器");
}
public static void main(String[] args) {
statictest this1 =new statictest();//new出这个对象只是为了下面的fangfa2()用,但即使你用static块里的构造器也没关系
//System.out.println(ff3); 错,说明静态方法中的变量也是个临时变量,并不是全局的
//System.out.println(staticY); 错,说明即使在STATIC块里定义的量,也是一个临时变量,并不是全局的,也不是这个类中的
//this.fangfa2(); 错,说明this是一个对象,不能用在static方法中
this1.fangfa2();
fangfa4();//单纯的想说明不需用this1引用
}
static{
statictest this2 =new statictest();//只为了说明可以在static块中就早点进行new出一个对象,目的是运行一下构造器
String staticY ="staticy";
//System.out.println(x);错
System.out.println(staticY);
//this.fangfa1();这样写错,因为this是表示自己这个对象,是一个对象值,而static是先于对象加载的
fangfa1();//说明static块可以调用静态方法方法
// if(true){} 对的,说明其实static块就可以当成一个没有名字,不能被调用的特殊的静态方法,它的实质是一个静态方法,同时还相当于main方法一样可以
// 运行,而且比main先运行
}
static void fangfa0(){
System.out.println("我是蝴蝶");
}//这个方法只是想表明我喜欢蝴蝶,没什么具体用处
static void fangfa1(){
System.out.println(staticX);
//System.out.println(X);错,因为静态方法不能调用非静态量
System.out.println(fangfa3());
//System.out.println(ff3) ;错,说明ff3即使在静态方法中定义的,但是它还是一个临时变量,但是如果在它前面加上static就不会错了
}
static String fangfa3(){
String ff3 ="我是fangfa3";
return ff3;
}
static void fangfa4(){
fangfa0();
}
void fangfa2(){
System.out.println(staticZ);//静态方法可以调用静态量
this.X ="2";
}
}
/*打印结果:*/
//我是构造器
//staticy
//我是静态变量
//我是fangfa3
//我是构造器
//我也是静态变量
//我是蝴蝶
/* 总结过程:1、static加载并初始化:先对静态量(变量和方法)进行初始化,对方法的初始化的意思是说,对这个变量名进行指针的赋值;对变量的初始化的就是
* 直接对这个变量进行一般数据类型的赋值
* 2、static执行:然后对static块中的内容进行执行,它相当于main方法一样先被执行,是静态的执行入口好比“main”,
* 3、非静态的加载并初始化:轮到所以的非静态的变量和方法的加载及它的赋值
* 4、执行构造器
* 5、非静态的执行:对main方法进行执行
* 注意:方法的赋值和调用是2个概念,方法的赋值是对这个方法名的也就是间接变量进行地址指针的赋值;而方法的调用是调用这个方法
* 注意:还有非静态块没提到
* 注意:执行和加载和初始化这3个概念一定要分清楚
* 注意:static是所有的该类的对象所共有,也就是一个 只有这1个,而非static量是每一个对象自己就有一个,好比最开始新建的变量X,this2.X和this1.X并不是
* 同一个
* 注意:因为static量是共有的,所以还是前面不要加对象名而直接调用比较好,这样对概念的理解有帮助
*/
对JAVA的static深刻理解(结合C语言的思考)的更多相关文章
- Java中static的理解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- Java之继承深刻理解
1.关于私有成员变量 无论父类中的成员变量是私有的.共有的.还是其它类型的,子类都会拥有父类中的这些成员变量.但是父类中的私有成员变量,无法在子类中直接访问,必须通过从父类中继承得到的protecte ...
- 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因
声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...
- 深刻理解Java中的String、StringBuffer和StringBuilder的差别
声明:本博客为原创博客,未经同意.不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(链接为http://blog.csdn.net/bettarwang/article/detai ...
- 深入理解java的static关键字
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...
- 关于java中Static关键字的加强理解
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...
- 深刻理解Java编程的7个例子
1. 阅读下列代码回答问题(第一个Java程序,理解PATH和CLASSPATH,学会使用javac和java命令) package cn.edu.uibe; public class Hell ...
- java中static关键字的理解(转载)
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...
- Java生鲜电商平台-深刻理解电商的库存架构与解决方案
Java生鲜电商平台-深刻理解电商的库存架构与解决方案 说明:一般电商的库存都是跟SKU相关联的,那么怎么样才能进行SKU的库存管理呢?有以下几种方式与方法: 一.七大库存分类 首先得学习什么是库存, ...
随机推荐
- 精美实用的jQuery插件精选
jQuery的确是一款相当强大的Javascript框架,同时jQuery的插件就多入牛毛,如果你善于收集,那么你在写前端页面的时候肯定会更加方便.本文精选了一些精美实用的jQuery插件供大家参考. ...
- Windows服务器Pyton辅助运维--03.安装Visual Studio 的 Python 开发插件 PTVS
PTVS (Python Tools for Visual Studio) http://pytools.codeplex.com/ 当前版本:2.1 RC PTVS (Python Tools fo ...
- windows 触发桌面图标布局保存
问题: 项目原有的一套结构由于引进了一个磁盘套件,类似于关闭系统的explorer.exe进程,进入到他所维护的explorer.exe中.于是出现了当退出磁盘的时候没有保存好桌面布局信息导致下次进入 ...
- USACO6.4-The Primes
The Primes IOI'94 In the square below, each row, each column and the two diagonals can be read as a ...
- ie浏览器中 overflow:hidden无作用的解决方案
原因: overflow:hidden失效 当父元素的直接子元素或者下级子元素的样式拥有position:relative属性时,父元素的overflow:hidden属性就会失效. 我在ie内发现子 ...
- 3D空间包围球(Bounding Sphere)的求法
引言 在3D碰撞检測中,为了加快碰撞检測的效率,降低不必要的碰撞检測,会使用基本几何体作为物体的包围体(Bounding Volume, BV)进行測试.基本包围体的碰撞检測相对来说廉价也easy的多 ...
- openwrt network interface(openwrt中的网络接口)
这篇算是对openwrt网络接口的一个翻译吧,源地址:http://wiki.openwrt.org/doc/networking/network.interfaces network的接口类型:物理 ...
- ProtoBuf 的java使用
碰巧用到Proto,算是笔记吧算是笔记吧, windows : 1,两个文件:proto.exe, protobuf-java-2.4.1.jar 2,建立一个工程TestPb,在下面建立一个pro ...
- Nginx的10万并发内核参数优化
关于内核参数的优化: net.ipv4.tcp_max_tw_buckets = 6000timewait的数量,默认是180000.net.ipv4.ip_local_port_range = 10 ...
- Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收 ...