Java 基础:
左边的是共性,右边是每一辆的特性; field。 static 共性不属于instance ; Static Members(field,methods,classes) belong to class, not object.
* what do you mean by belong to class, not instance"?属于类 class;不属于instance 无需instance; instance可能都没有创建 public class LaiOfferManager { public static void ipo ( ) { isRich = true; name //?不能 访问name (non 。static)车instance都没有 ,访问什么车主@@ } }
属于类的 能访问 这个name(这个field 属于instance的)这里IPO 是属于instance的
s n
s V V n.s x V ---------------------------------------------------- //能吧所有方法写成 s 不行没有ns instance自己的方法了=。=.
蓝色在 可以 这部分危险(一个人会改全部!因为属于类的状态 仅有一份) 用一个instance调用static method?读是很常见的吧 写X比较危险;在ns改s要三思! 引用s最好用类名去高亮;在instance去访问 很危险 用类名. 在ns 访问s 用类名. s调用ns。面试容易挂 ==....
EX: public class Solution {
public void search ( int [] array, int target) { .... } public static void main( String [] args) { .... search(myArray, myTarget); } } //没有创建instance,类调用 instance 调用毛线 改: public class Solution {
public static void search ( int [] array, int target) { ... } public static void main( String [] args) { .... search(myArray, myTarget); } }//这样就可以了(why;我让search也变成属于class s调用s )
//instance有不同行为呀(s有局限,只能属于类, 不能属于instance)在static方法没有 this(=当前的instance)这里class一个instance都没有啊(this你想要的是instance)你自己建立一个吧: Solution s = new Solution(); public class Solution { public void search ( int [] array, int target) { .... } public static void main( String [] args) { Solution s = new Solution(); //(给solution建instance)然后再调用instance s.search(myArray, myTarget); } }
//main这个方法属于s 所以你要main里面自己创建instance-,-没有人规定在s里面不能创建自己的属于类的instance: main为啥java规定是static的呢? Java运行程序他不管创建(helpyou)instance(你的事情)Java为调用entry (调用static的入口点)其他你自己创建instance;Entry不能改 main method 只能有一个//only one main method in one class //所有field 既可以属于类:class variable Class variable vs. Instance variable /Class method vs. Instance method
Final
constants. "Once assigned , cannot be changed." // final 关键字 意思 确定以后不能再修改,修饰class , Final class : A class that cannot be derived(inheritance)//mean 一个类不能有子类(inheritance)不能继承OOD FInal method: A method that cannot be overridden.//不能被覆盖(我们现在的method子类不能修改这个method的行为,行为只此一份)
Final variable: A variable that once assigned, cannot be assigned again.//上面说面向对象设计;现阶段: final variable 一旦付值之后,不能修改;比如 ML模型训练出来:怕人用theta运算 : Enforced invariance, instead of this: // Don't change the value! int theta = 5;
=.=: theta += 3;!!做project 时候 怕人改ML的theta,没看注释,导致分类结果差十万八千里 hhhhhhhhhIMAO 阻止猪队友:
// Don't change the value!!!! final int theta = 5; theta = 3 : ) no work
Soooooooo: code review 工业界看 final。private 被人改了吗 : ) 你要去看能不能justify~你code review 有敏感性(如果final被删你要解决)在实习的时候我的teammate总是建议我把public变成private。对. 用最严的access modifier 能用final就用final 工业界的习惯提醒写代码的人。final。双向提醒(机制和人review时候)final 修饰的int。但如果修饰 reference field 女友
|