正文之前
今天是正式回家的第一天佛纫,所以開啟開心愉快的學習之旅吧!由于我是個初學者萌焰,所以放棄了好用的IDLE哺眯,直接手動Sublime慢慢寫, 遇到了不少的問題扒俯,慢慢來解決吧奶卓!
正文
第一點:靜態(tài)變量/方法與非靜態(tài)變量/方法
// package com.zzbyyw.test;
/* what do you want to do?
* heihei
* heihei
*/
public class Test1{
private String name="abc";
public void PrintName(String name){
this.name=name;
System.out.println(name);
}
public static void main(String[] args) {
// Test1 sss=new Test1();
// sss.PrintName("Zhangzhaobo");
PrintName("Zhangzhaobo");
}
}
編譯寝杖,運行之后報錯如下:
/Users/zhangzhaobo/program/java/Test1.java:16: 錯誤: 無法從靜態(tài)上下文中引用非靜態(tài) 方法 PrintName(String)
PrintName("Zhangzhaobo");
^
1 個錯誤
[Finished in 1.5s with exit code 1]
[shell_cmd: javac "/Users/zhangzhaobo/program/java/Test1.java" && java "Test1"]
[dir: /Users/zhangzhaobo/program/java]
[path: /Library/Frameworks/Python.framework/Versions/3.5/bin:“./usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin”]
那么最關(guān)鍵的當然是這一句:
錯誤: 無法從靜態(tài)上下文中引用非靜態(tài) 方法
所以直接百度
選擇了一篇比較靠譜的CSDN的博文看了起來违施,才發(fā)現(xiàn)了真相!
無法從靜態(tài)上下文中引用非靜態(tài)變量,非靜態(tài)方法 - CSDN博客
終于得到了如下的結(jié)論:
簡單說來瑟幕,靜態(tài)方法可以不用創(chuàng)建對象就調(diào)用磕蒲,非靜態(tài)方法必須有了對象的實例才能調(diào)用.因此想在靜態(tài)方法中引用非靜態(tài)方法是不可能的,因為它究竟引用的是哪個對象的非靜態(tài)方法呢?編譯器不可能給出答案,因為沒有對象啊,所以要報錯.
于是有了如下的版本:
// package com.zzbyyw.test;
/* what do you want to do?
* heihei
* heihei
*/
public class Test1{
private String name="abc";
public void PrintName(String name){
this.name=name;
System.out.println(name);
}
public static void main(String[] args) {
Test1 sss=new Test1();
sss.PrintName("Zhangzhaobo");
}
}
編譯結(jié)果:
Zhangzhaobo
[Finished in 1.5s]
或者是下面的版本:
// package com.zzbyyw.test;
/* what do you want to do?
* heihei
* heihei
*/
public class Test1{
private String name="abc";
public static void PrintName(String name){
// this.name=name;
System.out.println(name);
}
public static void main(String[] args) {
PrintName("Zhangzhaobo");
}
}
當然,這樣的話就失去了我基本的想法了只盹。因為我是要輸入一個name辣往,可以把這個實例的name改變的,當然殖卑,沒有實例站削,哪來的name呢?是不是孵稽。
第二點: this指針的用處
this指針幾乎等同于C++的意思许起,當你定義一個本類的實例對象的時候,封裝過程中菩鲜,肯定會有一些的變量什么的會被隱藏起來园细,那么我們需要對其進行賦值怎么辦呢?這個時候就需要個this指針來起作用了接校,我們this的意思就指代了這個對象本身猛频,但是又不會存在private的限制,可以直接引用本對象的私有變量蛛勉,從名字就看得出來么鹿寻,this,很明顯的自己人不是诽凌。
// package com.zzbyyw.test;
/* what do you want to do?
* heihei
* heihei
*/
public class Test1{
private String name="abc";
private int age = 20;
public void setName(String name){
this.name=name;
System.out.println(name);
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public void Introdution()
{
System.out.println("大家好毡熏,我的名字是:"+this.name+",我的年齡是:"+this.age);
}
public static void main(String[] args) {
Test1 sss=new Test1();
System.out.println(sss.getName());
sss.setName("Zhangzhaobo");
sss.Introdution();
}
}
編譯之后的結(jié)果是:
abc
Zhangzhaobo
大家好侣诵,我的名字是:Zhangzhaobo招刹,我的年齡是:20
[Finished in 1.7s]
正文之后
是很簡單而且粗淺了。不過慢慢來么窝趣,時間還長,走你训柴。
對了哑舒。我今天把樹莓派拿回來了。設(shè)置了一個超酷的鬧鐘幻馁,每天早上7:30開始放Alan Walker 的Fade洗鸵。我就不信我還沒法早起了越锈?某妹子,你說是不是膘滨?甘凭?@!;鸬恕丹弱!