1 【this】
  2     指的是明确的标记本类的结构
  3     当前正在调用类中方法的对象,不是一个固定的
  4     java中以“{}”为界限。如果现在属性名称和参数名称重名,那么默认情况下,如果没有加任何的限制,指的是最近的“{}”内的变量名称。
  5     在这种情况下明确找到要访问的变量属于类中的属性的时候,需要在变量前加this,这样就可以准确的进行属性的标记
  6 1.★★在以后的程序中,只要访问类中的属性,前面必须加“this”★★
  7 范例:
  8 public class Book {
  9     private String title;
 10     private double price;
 11
 12     public Book(String title,double price){
 13         /*同名的属性,指的都是系统默认值*/
 14         title = title;
 15         price = price;
 16         /*this.属性,后面是传入的参数*/
 17         this.title = title;
 18         this.price = price;
 19     }
 20
 21     public String getInfo(){
 22         return "书名" + this.title + ",价格" + this.price;
 23     }
 24
 25     public String getTitle() {
 26         return title;
 27     }
 28
 29     public void setTitle(String title) {
 30         this.title = title;
 31     }
 32
 33     public double getPrice() {
 34         return price;
 35     }
 36
 37     public void setPrice(double price) {
 38         this.price = price;
 39     }
 40
 41     public static void main(String[] args) {
 42         Book book = new Book("java",89.5);
 43         System.out.println(book.getInfo());
 44     }
 45 }
 46
 47 调用方法:普通方法,构造方法
 48     构造方法之间进行互相调用,形式this.(参数,参数)
 49 2.★严谨地,调用本类方法,一定加上this★
 50     注意:1.this 一定要放在构造方法首行,也尽量放在普通方法首行
 51           2.类中构造方法间的弧线调用,一定要保留出口
 52           即,this 互调构造方法时,一定要至少保留一个构造方法没有使用this调用其他构造方法
 53 范例:
 54 public class Emp {
 55     private int empno;
 56     private String ename;
 57     private double sal;
 58     private String dept;
 59
 60     //构造函数可以快捷生成(source)
 61     public Emp(){
 62         this(0,"无名氏",0.0,"未定");
 63     }
 64
 65     public Emp(int empno){
 66         this(empno, "临时工", 800, "后勤部");
 67     }
 68
 69     public Emp(int empno,String ename){
 70         this(empno, ename, 2000, "技术部");
 71     }
 72     /*保留了一个(构造方法)的出口*/
 73     public Emp(int empno,String ename,double sal,String dept){
 74         this.empno = empno;
 75         this.ename = ename;
 76         this.sal = sal;
 77         this.dept = dept;
 78     }
 79
 80     public void print(){
 81         System.out.println("**************************");
 82     }
 83
 84     public String getInfo(){
 85         this.print();    //调用本类的方法
 86         return "雇员编号:" + this.empno + ",\t姓名:" + this.ename + ",\t工资:" + this.sal + ",\t部门:" + this.dept;
 87     }
 88
 89     public static void main(String[] args) {
 90         Emp emp = new Emp();
 91         Emp emp2 = new Emp(1);
 92         Emp emp3 = new Emp(2, "李四");
 93         Emp emp4 = new Emp(3, "张三", 1000.8, "行政部");
 94         System.out.println(emp.getInfo());
 95         System.out.println(emp2.getInfo());
 96         System.out.println(emp3.getInfo());
 97         System.out.println(emp4.getInfo());
 98
 99     }
100 }
101
102
103 【static】
104     ★★编写类时,很少用到★★,除非类中只有方法,这时可以把该方法定义为静态方法
105     类.静态属性
106     类.静态方法
107 1.属性
108 范例:
109 public class Book {
110     private String title;
111     private double price;
112
113     static String pub = "清华大学出版社";
114
115     public Book(String title,double price){
116         this.title = title;
117         this.price = price;
118     }
119
120     public void print(){
121         System.out.println("********************");
122     }
123
124     public String getInfo1(){
125         this.print();    //调用本类方法
126         return "书名:" + this.title + ",价格:" + this.price + ",出版社:" + this.pub;
127     }
128
129     public String getTitle() {
130         return title;
131     }
132
133     public void setTitle(String title) {
134         this.title = title;
135     }
136
137     public double getPrice() {
138         return price;
139     }
140
141     public void setPrice(double price) {
142         this.price = price;
143     }
144
145     public static void main(String[] args) {
146         Book book1 = new Book("java",89.5);
147         Book book2 = new Book("Android",12);
148         Book book3 = new Book("Oracle",20);
149         /*静态属性,只要一个对象修改了属性的内容,所有对象的static属性的内容就都将一起改变*/
150         //book1.pub = "北京大学出版社";
151         Book.pub = "北京大学出版社";
152         System.out.println(book1.getInfo1());
153         System.out.println(book2.getInfo1());
154         System.out.println(book3.getInfo1());
155     }
156 }
157
158 2.方法
159 范例:
160 package march_21;
161
162 public class Book {
163     private String title;
164     private double price;
165
166     static String pub = "清华大学出版社";
167
168     public Book(String title,double price){
169         this.title = title;
170         this.price = price;
171     }
172     /*静态方法*/
173     public static void setPub(String p){
174         pub = p;//this不能点静态属性
175     }
176
177     public void print(){
178         System.out.println("********************");
179     }
180
181     public String getInfo1(){
182         this.print();    //调用本类方法
183         return "书名:" + this.title + ",价格:" + this.price + ",出版社:" + this.pub;
184     }
185
186     public String getTitle() {
187         return title;
188     }
189
190     public void setTitle(String title) {
191         this.title = title;
192     }
193
194     public double getPrice() {
195         return price;
196     }
197
198     public void setPrice(double price) {
199         this.price = price;
200     }
201
202     public static void main(String[] args) {
203         /*没实例化对象,也可以利用类名直接调用*/
204         Book.setPub("北京大学出版社");
205
206         Book book1 = new Book("java",89.5);
207         Book book2 = new Book("Android",12);
208         Book book3 = new Book("Oracle",20);
209         System.out.println(book1.getInfo1());
210         System.out.println(book2.getInfo1());
211         System.out.println(book3.getInfo1());
212     }
213 }
214
215 ★static可以不new,直接调用;非static一定要new,才能调用★
216     1.static方法不能直接访问非static属性或者方法,只能调用static属性或方法
217     2.非static方法可以调用static的属性或方法,不受限制
218
219 main函数中String[] args:程序运行的时候传递的参数,形式:TestDemo 参数 参数 参数
220             如果参数本身有空格,形式:TestDemo "Hello World" "Hello MLDN"
221
222 功能一:实现类实例化对象个数的统计
223         希望每当实例化一个类对象的时候都可以打印一个信息:产生的第x个实例化对象。
224         因为只要是新的实例化对象产生了,那么一定会去调用类中的构造方法,
225         所以可以在构造方法里面增加一个统计数据的操作,每当新对象产生之后统计的内容就自增一个。
226 范例:
227 public class BookStatic {
228     private static int num = 0;
229
230     public BookStatic(){
231         num ++;
232         System.out.println("这是第" + num + "个产生的对象");
233     }
234
235     public static void main(String[] args) {
236         new BookStatic();new BookStatic();new BookStatic();
237         new BookStatic();new BookStatic();new BookStatic();
238     }
239 }
240
241 功能二:实现属性的自动设置
242         例如,现在某一个类有一个无参构造方法,一个有参构造方法,有参构造主要的目的是传递一个title属性,
243         但是希望不管调用的是无参的还是有参的构造,都可以为title设置内容(尽量不使用重复的内容设置)。
244 范例:
245 public class BookStatic {
246     private static int num = 0;
247     private String title;
248
249     public BookStatic(){
250         this("NOTITLE -- " + num++);
251 //        num++;
252     }
253
254     public BookStatic(String title) {
255         this.title = title;
256     }
257
258     public String getTitle(){
259         return this.title;
260     }
261
262     public static void main(String[] args) {
263         System.out.println(new BookStatic("java").getTitle());
264         System.out.println(new BookStatic().getTitle());
265         System.out.println(new BookStatic().getTitle());
266     }
267 }
268
269 /*执行先后顺序:静态块>静态代码>静态的构造方法*/
270 public class StaticDemo {
271     public StaticDemo(){
272         System.out.println("静态的构造方法");
273     }
274
275     //数据库用的比较多
276     {
277         System.out.println("这是静态代码");
278     }
279     /*程序运行前,加载进去的,不管有么有实例化对象*/
280     static{
281         System.out.println("这是静态块");
282     }
283
284     public static void main(String[] args) {
285         StaticDemo staticDemo = new StaticDemo();
286     }
287 }

转载于:https://www.cnblogs.com/ivy-xu/p/5304096.html

this和static相关推荐

  1. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  2. Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法

    Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...

  3. Static interface methods are only supported starting with Android N (--min-api 24): void okhttp3.log

    错误内容如下 Error: Static interface methods are only supported starting with Android N (--min-api 24): vo ...

  4. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  5. java static 作用详解

    static表示 "静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,也可是修饰内部类, 我们常说的静态内部类,注意外部类不能使用静态的, static方 ...

  6. public static final int REMIN_REQUEST_CODE = 0x911 自己的大致理解

    public static final int REMIN_REQUEST_CODE = 0x911; 自己理解为 一个静态常量,也就一个标识,自己目前主要在2个地方常用到 OnActivityRes ...

  7. C++ static

    (1)static表示静态变量.局部变量存储在栈区,在{}结束时被释放.而static修饰的变量存储在全局区,在程序结束时被释放. (2)static修饰的变量在外部文件中无法调用,即使使用exter ...

  8. java static 可见性_Java多线程 synchronized与可见性的关系以及可见性问题总结

    作者:七里香的编程之路 出自:OSCHINA 原文:my.oschina.net/u/4098550/blog/4548274 能保证可见性的措施 除了volatile 可以让变量保证可见性外.hap ...

  9. c cin.get()的用法小结_c语言中static 用法

    static在c里面可以用来修饰变量,也可以用来修饰函数. 先看用来修饰变量的时候.变量在c里面可分为存在全局数据区.栈和堆里.其实我们平时所说的堆栈是栈而不是堆,不要弄混. int a ; int ...

  10. java内部类的权限符,static介绍、内部类、final、权限修饰符的作用范围,

    static介绍.内部类.final.权限修饰符的作用范围,static 关键字:(可用于修饰方法.变量) static 特点: static是静态修饰符,一般修饰成员变量.被static修饰的属于全 ...

最新文章

  1. 2020 年深度学习最佳 GPU 一览,看看哪一款最适合你!
  2. [禅悟人生]拿得起放得下, 才是真幸福
  3. 从 Android 静音看正确的查找 bug 的姿势
  4. 【个人成长学习讨论小组】练习2:角色
  5. boost::math::filters::daubechies_scaling_filter用法的测试程序
  6. [vue] 你有使用做过vue与原生app交互吗?说说vue与ap交互的方法
  7. [css] 如何使用CSS实现段落首字母或首字放大效果?
  8. 【MS SQL】通过执行计划来分析SQL性能
  9. C++11与最小垃圾回收
  10. python删除txt文本文件第一行数据
  11. Ubuntu 20.04.2.0 LTS 系统安装过程详解 部署OJ参考
  12. python 读取地震道头数据_[宜配屋]听图阁
  13. Could not start AVD
  14. 设计模式之访问者模式(C# / JavaScript / PHP / Java / Python 演示代码)
  15. 局域网有一台计算机网络慢,局域网网速变慢的五种解决办法
  16. 八泉峡明星旅游目的地系列推介会即将举行 蒋大为将现身助阵
  17. c++的继承与派生之从入门到入坟-------集大成者
  18. 计算机编程的11种趋势:
  19. ubuntu20.04修改用户名【保留文件】
  20. 嵌入式操作系统--篮球记分计时系统

热门文章

  1. 爬虫实战学习笔记_2 网络请求urllib模块+设置请求头+Cookie+模拟登陆
  2. php留言板实现留言评价,PHP实现留言板功能的思路
  3. 属于python应用领域的有数据可视化_Python数据可视化
  4. JS面向对象——class定义类、类的构造函数、实例方法、访问器方法、静态方法、继承、super、多态
  5. React脚手架学习笔记
  6. Web框架——Flask系列之Flask简介(一)
  7. LeetCode 1007. 行相等的最少多米诺旋转
  8. LeetCode 1055. 形成字符串的最短路径(贪心)
  9. LeetCode 296. 最佳的碰头地点(坐标独立+中位数的地方最近)
  10. jlist放jbutton 按钮事件失效_电动高处作业吊篮操作如何面对一些突发事件