this和static

  1this  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 
103static104     ★★编写类时,很少用到★★,除非类中只有方法,这时可以把该方法定义为静态方法
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs2013配置opencv2.4.9后出现找不到opencv_core249d.dll和opencv_highgui249d.dll问题

问题:vs2013配置opencv2.4.9后,运行程序,出现找不到opencv_core249d.dll和opencv_highgui249d.dll问题 解决办法:首先将opencv_core249d.dll;opencv_highgui249d.dll;opencv_imgproc249d.dll三个文件从“OpenCV的安装…

数字图像处理:图像的频域

数字图像处理:图像的频域 一、图像高频信号和低频信号的理解 1.1 图像中的低频信号和高频信号也叫做低频分量和高频分量。 1)空间频率指的是图像中灰度值相对它的邻居点变化方式。如果一副图像中灰度从一边到另一边变化很小,那就说这副图像…

点击Cell中的按钮时,如何取所在的Cell

点击Cell中的按钮时,如何取所在的Cell: -(void)OnTouchBtnInCell:(UIButton *)btn { CGPoint point btn.center; point [table convertPoint:point fromView:btn.superview]; NSIndexPath* indexpath [table indexPathForRowAtPoint:point]; UITableV…

opencv2.4.9报错找不到opencv_video249d.dll

解决方法:将opencv_video249d.dll从“opencv安装路径\opencv\build\x86\vc12\bin”复制到“C:\Windows\SysWOW64”(若是32位系统则复制到C:\Windows\System32) opencv_video249d.dll中的249是版本号,代表OpenCV版本是2.4.9

Halcon算子学习:图像阈值分割-threshold、binary_threshold、dyn_threshold算子

Halcon算子学习:图像阈值分割算子前言1.threshold-全局固定阈值分割2.Binary Threshold-自动全局阈值分割3.dyn_threshold-局部动态阈值分割小结:4.var_threshold算子-均值和标准偏差局部阈值分割5.dual_threshold-双重阈值分割(有符号图像的…

起底软银帝国:芯片、机器人、棒球队无所不投

来源:巴伦全球投资企鹅号划重点:孙正义喜欢将软银的投资组合比作银河系中的星星,称它们“将持续闪耀300年。”孙正义对阿里巴巴的投资可能是所有投资人做过的最好的投资之一。软银并非真正意义上的企业集团,其结构也不是封闭式基金…

visual studio如何中止正在运行的程序

如果是正在调试的程序,按shiftF5可以中止调试如果是正在运行的程序,按CtrlBreak(Pause) 可以中止运行

数字图像处理:数值图像的文件格式总结

文档下载: 数字图像文件的存储格式研究 1.前言 通过计算机处理的图像一般称为数字图像,它与传统照片不同,它可以通过某种软件被任意修改和编辑。但他又与传统照片有密切联系,因为好多图像信息大都由照片扫描而来,另…

OpenCV中VideoCapture判断isOpened()时总是返回false

将“OpenCV安装路径\opencv\build\x86\vc12\bin”下的opencv_ffmpeg249.dll文件拷贝到 exe 执行文件目录下(工程文件下) 注意两点: 这里opencv_ffmpeg249.dll中的249是版本号,代表安装的OpenCV版本是2.4.9,如果安装的…

南京大学潘天群教授:人类智能发展的宏大叙事

作者:南京大学哲学系教授,科学技术与社会研究所所长潘天群新拿到刚出版的《崛起的超级智能》一书,我一口气读完了。作者刘锋敏锐地观察到,今天的互联网已经不是个人电脑及智能手机等的简单连接,而是一个有生命的智能体…

[转]2016年Web前端面试题目汇总

记得去年 12月份刚来北京面试前端的时候 ,下面的这问题大部分有涉及到...是不是要做题的都会出这些。。 HTML/CSS部分 1、什么是盒子模型? 在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(conte…

Halcon学习笔记:读取多张图片

1.第1种方法 遍历文件路径数组 path:E:/images1/ ImagePath:[] ImagePath[0]:a000.bmp ImagePath[1]:a001.bmp ImagePath[2]:a002.bmp ImagePath[3]:a003.bmp ImagePath[4]:a004.bmp ImagePath[5]:a005.bmp ImagePath[6]:a006.bmp ImagePath[7]:a007.bmp for i:0 to 7 by 1re…

Atitit.js this错误指向window的解决方案

Atitit.js this错误指向window的解决方案 1.1. 出现地点and解决之道1 1.2. call,apply和bind这三个方法2 1.2.1. Function.prototype.call2 1.3. 在函数内部出现的this,指什么要看这个this所在的函数的被调用方式。 不论这个this出现在什么样的函数中,层…

win10下VS2013+OpenCV2.4.9环境配置

参考来源https://blog.csdn.net/wsf09/article/details/78853823 一、安装Visual Studio2013 VS2013的安装可以参考软件安装管家公众号 二、配置OpenCV2.4.9 1、首先下载安装包 可以从OpenCV的官网下载 OpenCV2.4.9,但是会有点慢,中途可能还下载失败…

大脑简史(3)-大脑的结构

来源:人机与认知实验室前两篇文章,笔者和大家简短的介绍了一下大脑历史上的大事件和研究大脑的常用手段,这篇文章,想和大家分享一下:大脑的结构,也就是说:我们的大脑内究竟有什么。1967年&#…

Halcon算子学习:xyz_to_object_model_3d

xyz_to_object_model_3d (X, Y, Z : : : ObjectModel3D) 将3D点从图像转换为3D对象模型。 输入: X (input_object) 单通道图像→object (real) 用三维点的x坐标和三维点ROI区域。Y (input_object) 单通道图像→object (real) 图像与三维点的y坐标。Z (input_obje…

OpenCV的imshow不能显示图像(显示的图像全灰)

问题:OpenCV的imshow不能显示图像,虽然能打开一个显示图像的窗口,但是只显示出背景(全灰色) 解决方法:在imshow语句后面加一句waitKey(100); 在imshow之后如果没有waitKey语句则不会正常显示图像

传感器融合:自动驾驶领域的另一个突围方向

来源:AI芯天下目前,自动驾驶的安全事故原因绝大多数出现在传感器这个重要环节,将各类传感器融合在一起,能否就能起到1+1>2的效果呢?传感器是汽车感知周围的环境的硬件基础,在实现自动…

第四周学习进度情况

第四周所花时间(包括上课)835MIN代码量(行)200博客量(篇)3了解到的知识 1.继续锻炼了结对开发的能力 2.更熟练地运用了数组结构 3.学会了从小功能入手,在软件设计上有新的提高 4.对迭代开发更加…

Halcon算子学习:surface_normals_object_model_3d

surface_normals_object_model_3d ( : : ObjectModel3D, Method, GenParamName, GenParamValue : ObjectModel3DNormals) 计算三维物体模型的三维曲面法线 输入: ObjectModel3D (input_control) 包含3D点数据的3D对象模型句柄。Method(input_control) 法线计算方…