js
-
严格检查模式:‘use strict’,语法JavaScript的随意性导致的问题。用它的前提:idea支持es6语法
-
局部变量建议都使用let定义
-
对象属性赋值,用.访问即可。使用一个不存在的属性,不会报错,只是undefined。如person.haha
-
访问对象属性也可以person['keyName']或person[keyName]
-
判断属性是否在某对象中:xxx in xxx
注意属性名是键,必须用引号引起
-
JavaScript中都叫函数,不叫方法
-
判断一个属性是否是这个对象自身拥有的hasOwnProperty(keyName)
-
JavaScript可以动态地删减属性(和java极其不一样,展现了其动态语言的特性,java中类加载后模板已定,属性有哪些就是哪些)
也可以动态地添加属性,直接赋值
java
1、一个项目由很多源文件组成。只能有一个源文件有main方法这个入口。其它的都写成日常的类即可,别给每个类都加个main方法。(意思就是一个项目只存在一个main方法,即只有一个主类)
2、一个源文件里最多只能有一个public类,且有public类的话源文件名与它类名相同。
1、如果源文件中有多个类,那么只能有一个类是public类 ;如果有一个类是public类 ,那么源**文件的名字必须与这个类的名字完全相同,扩展名是.java。 2、如果源文件中没有public类,那么源文件的名字可以任意取。
3、不要忘记new一个实例时,类的后面也要(),因为这是在选择相应的构造函数去调用,依此构造器实例化对象。
4、final类不允许被继承
5、类里的属性也叫字段(field),也叫成员变量。
下图u0000即unicode字符集中对‘空’的一个编码
6、写类时注意属性私有
7、判断两个方法是否相同:方法名和参数列表相同,则方法相同
8、对象需要被封装,类将各具体的对象抽象并封装起来了。类太多了也需要抽象出来,就出现了继承。比如动物是哺乳动物、爬行动物等等的抽象
9、因为JVM干了很多事,所以有一些我们看不见,但冥冥之中存在的东西,比如默认的无参构造,比如顶级类Object。Object是java.lang包下的,自动被import。
10、父类的父类就成为祖宗类
11、this和super关键字,一个代表父类对象,一个代表当前对象
12、this();和super();分别代表调用本类的构造器和调用父类的构造器。对它们的调用都必须是构造器的第一句话
13、高转低,需强制转换,低转高,自动执行。对象之间的强转需要有父子关系或祖宗和子孙关系,避免瞎转换。类型转换异常:ClassCastException
14、栈中的变量名不能有重复,即各变量名的标识符要不同
15、一般用instanceof关键字先判断两个对象是否相似,然后再进行强制转换
16、只能是父类或祖宗类的引用执行子类对象,不能是子类引用指向父类或祖宗类对象
17、静态方法,即类方法,在本类中可以直接调用,不加类.方法名都可以。属性也是。在其他类里调用它,推荐直接类名.方法或属性
18、匿名代码块在实例化对象时被加载,即创建对象时自动被创建和执行,而且在构造器执行之前被创建。静态代码块和类一起被加载,永久只执行一次。(即运行某源文件时,类的加载先和静态代码块一起被执行,且这个静态代码块只执行一次。然后有对象被创建时,每次都会执行匿名代码块,匿名代码块执行完后才执行构造器。)
匿名代码块一般用于给对象赋一些初始值
19、jdk新特性。静态导入包中的静态方法或常量,连类名都可以不加了,直接用方法名和属性
20、implements和extends之间没有逗号
java修饰符分为访问控制修饰符 非访问控制修饰符
-
访问控制修饰符:private、default、protected、public
-
非访问控制修饰符:static、final、abstract、synchronized、volatile
一、访问控制修饰符:
-
private:仅在同一类内可见。使用对象:变量、方法。
注意:不能修饰类(外部类)
-
default(默认,什么也不写):在同一包内可见,不使用任何显式访问控制修饰符。使用对象:变量、方法、类、接口
-
protected:对子类和同一包内的类可见。使用对象:变量、方法。
注意:不能修饰类(外部类)
-
public:对所有类可见。使用对象:变量、方法、类、接口