构造代码块、this关键字、静态变量、静态代码块、主函数
一、构造代码块:
作用:给对象进行初始化。
特点:对象一经运行就执行(与变量声明时赋初值同级别,此处注意 非法前向引用)
优先于构造函数的执行。
与构造函数的区别: 构造代码块是给所有对象统一初始化。 一般给所有对象的共性属性的初始化。
构造函数是给对应对象进行初始化。
二、this关键字。
作用:指向this所在函数所属的对象 (哪个对象调用了this所在的方法,this就指向哪个对象)。
应用:当在定义类中的功能时,该函数的内部要用到调用该函数的对象时,便用this来表示这个对象。
(当以第一人称在阐述一个类的功能时, 在需要用到 “我” 或者 “我的” 的时候,此处便使用this关键字来表示。)
注意:在类有多个重载构造方法的时候,可以在一个构造方法中使用 this(实参) 的语句调用其他构造方法 且 其要在第一句(但是要在super后。)
在初始化中还有初始化的时候, 要先执行内部的初始化 之后再执行自己的初始化。所以要放在第一行
三、静态变量
说明:使用 static 修饰的。 我们知道,在方法内部的变量放于栈内存(stack)中, 而类中的成员变量放于堆内存中(heap), 而我们被static修饰的成员变量存放于
静态数据段(data segmet)中, 其在类中一个定义(当有继承的时候,可以有静态重写,使得一个类就有了多个,使用与静态绑定理论)只有一个。所有的该类
对象公有一个该变量(也就是说,私有的成员属性是不能用静态修饰的),使用类名和对象名皆可访问此变量。
注意:static只能修饰成员,不能修饰局部。
可以被类名和对象共同调用。
静态方法只能访问静态成员, 而非静态方法可以访问静态成员。
因为静态成员优先于对象(有了对象才有非静态出现),所以静态方法中不能出现this super等关键字。
主函数是静态的。
总结特点:1)、随着类的加载 在data segment中被加载。(生命周期长)
2)、优先于对象的存在。
3) 、被所有的对象共享。
4)、可以直接被类名调用。
优缺点:
优点: 节约空间 可以被直接调用。
缺点: 访问局限性 生命出现局限性。
什么时候使用静态:
当所有的对象共享属性的时候,该属性可以写为静态(如中国人的国籍)。
当某个方法不涉及到类的动态 成员的时候,可以写成静态,(每个人都会哭,还是同样的哭),
四、静态代码块
特 点:随着类的加载而加载,随着类的结束而结束(存在时间同样长)
格 式:static
{
静态代码块中的语句。
}
作 用:给类初始化用的
五、主函数
主函数:是一个特殊的函数,作为被jvm调用的入口函数。
定 义:主函数是固定格式的,被jvm识别: public static void main(String[] args){}.
特 点:jvm在调用主函数的时候,给主函数传入一个 new String[0]; 启动jvm的时候可以给字符串传入字符串参数,之后可以操作这些数据。
for example : Java 类名 参数1 参数2 参数3....
六、Exercise :
定义一个person类,其中包括了国籍、姓名、性别、年龄等成员属性, 还有比较自己与别人或者别人与别人的年龄的大小得功能,
一个会哭的初始功能 和 调用功能。



构造代码块、this关键字、静态变量、静态代码块、主函数的更多相关文章
- java:构造方法:无参构造/有参构造 this static关键字 静态变量 静态方法 代码块 封装 静态常量。
/*构造方法是一种特殊的方法,专门用于构造/实例化对象,形式:[修饰符] 类名(){ }构造方法根据是否有参数分为无参构造和有参构造*/public class Dog { ...
- java 静态变量 静态代码块 加载顺序问题
在网上看了一个这样的题目 public class StaticTest { public static void main(String[] args) { staticFunction(); } ...
- Linux c readdir是非线程安全,需用readdir_r,要注意用静态变量当做返回值的函数的非线程安全性
readdir函数: struct dirent *readdir(DIR *dirp); The data returned by readdir() may be overwritten by ...
- Java静态变量、静态块、构造块、构造函数、main函数、普通代码块的执行顺序
测试代码 public class SingleTest { public static String v = "StaticValue"; static { System.out ...
- Java代码执行顺序(静态变量,非静态变量,静态代码块,代码块,构造函数)加载顺序
//据说这是一道阿里巴巴面试题,先以这道题为例分析下 public class Text { public static int k = 0; public static Text t1 = new ...
- Java中的静态变量、静态方法、静态代码块
转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对 ...
- java代码块,静态代码块,静态变量,构造方法执行顺序
一个类中执行顺序: 静态变量静态代码块代码块构造方法 子类和父类执行顺序: 父类静态变量父类静态代码块子类静态变量子类静态代码块父类代码块父类构造方法子类代码块子类构造方法 直接看代码,一目了然. p ...
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始...
很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...
- java入门---变量类型&类变量&局部变量&实例变量&静态变量
在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; ...
随机推荐
- 结巴(jieba)分词
一.介绍: jieba: “结巴”中文分词:做最好的 Python 中文分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentatio ...
- Yii2框架GridView自带导出功能最佳实践
1. 导出excel的实现方法 (1)使用phpexcel封装工具类导出excel (2)使用爬虫爬取页面再处理封装工具类导出excel (3)使用页面渲染后处理html添加头部信息生成excel文件 ...
- 老男孩python学习自修第十四天【序列化和json】
序列化是使用二进制的方式加密列表,字典或集合,反序列化是解密的过程:序列化开启了两个独立进程进行数据交互的通路 使用pickle进行序列化和反序列化 例如: pickle_test.py #!/usr ...
- linux 挂载windows下目录,其它linux机器nfs的目录,自己dd的文件
如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ 挂载window下共享的目录 //192.168.0.11/share /mnt 挂载其它linux机器下目录 ...
- HTML——标签说明
基本 <html>…</html> 定义 HTML 文档 <head>…</head> 文档的信息 <meta> ...
- React 学习(二) ---- props验证与默认属性
在上一节中, 我们提到了props, 组件之间数据的传递使用props. 我们调用组件时可以设置props, 组件内部通过props获取. 为了props 使用更加友好, React 提供了简单的验证 ...
- 用递归方法解决汉诺塔问题(Recursion Hanoi Tower Python)
汉诺塔问题源于印度的一个古老传说:梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.梵天命令婆罗门把圆盘按大小顺序重新摆放在另一根柱子上,并且规定小圆盘上不能放 ...
- FFT算法小结
都应该知道多项式是什么对吧(否则学什么多项式乘法) 我们用\(A(x)\)表示一个\(n-1\)次多项式,即\(A(x)=\sum_{i=0}^{n-1} {a_i}*x^i\) 例如\(A(x)=x ...
- FAQ常见问题解答---搭建hubot
1. [root@test160 ~]# npm install -g n npm ERR! Error: CERT_UNTRUSTED 证书不受信任的 解决办法: npm config set st ...
- 【BZOJ1578】【USACO2009Feb】股票市场 背包DP
题目大意 告诉你\(n\)只股票在这\(m\)天内的价格,给你\(s\)元的初始资金,问你\(m\)天后你最多拥有多少钱. \(n\leq 50,m\leq 10,s\leq 200000,\)答案\ ...