Java(1-15)

1、方法参数是引用类型,传递的是内存地址!
2、方法的重载特性:在同一个类中,允许方法同名,只要方法的参数列表不同即可!
3、Stirng特殊在如果静态数据区中存在,那么不创建新的对象,而是指向这个对象。
4、String str="scce"; //这是在静态数据区创建了一个对象
5、String str2="scce"; //创建静态数据对象是先在静态数据区查,如果存在则不创建新的,保证静态数据区中的数据只有一份
6、String str2=new String("scce"); str==str2返回false //在堆中创建一个对象,引用值当然不同
7、创建类(功能组件),创建引用类型变量,new两次的出来的类是在堆内存中开辟空间的两个不同模块和内存地址,内存中将有自己的属性,通过存放在栈内存的不同变量p1和p2指向对应的内存地址。
8、对于性别等单字眼字符,使用char比string更节约内存。
9、ArrayList集合创建格式?它与数组的区别是前者只存引用类型。这些都要搞清楚。

ArrayList集合(String类型)创建格式:
ArrayList<String> arr = new ArrayList<String> ();

数组创建方式:
String[] arr = new String[length];
String[] arr = {"1","2","3"}

10、集合存储的数据,8个基本数据类型对应8个引用数据类型。(存储引用数据类型,不存储基本数据类型)
11、数组的弊端是定长。
12、集合的好处是任意数据的添加和删除,而数组不行。
13、注意for循环不能用return,人才啊,草。
14、char转成int类型的时候,类型自动提升,char数据类型,会查找ASCII编码表,得到整数。(char 两个字节 int 四个字节)=》   自动提升:char j = ‘a’;   int i = j + 1;   强制转换:int j = 90;   char i =  (char) j ; 

15、char 可以和 int 类型计算 ,提升为 int 类型,内存中为两个字节 取值范围是 0~65535。char是无符号的数据类型,只有正数,而short有正负数,取值范围是 - 32768~32767。

16、“ ” table键对齐。

17、选择排序法和冒泡排序法(后者较难)。

18、数组的二分法查找元素索引(动用大中小三个指针定位)。

19、eclipse没有编译失败。

20、内存位置、默认值不同:方法里面的局部变量(没有默认值,不赋值不能使用)是跟着方法进栈,而类中成员变量(有默认值)是跟着对象进堆,两者内存位置不同。

21、生命周期不同:类中成员变量,跟随对象在堆中存储,内存等待JVM清理,生命较长;而局部变量,跟随方法出栈,生命较短。

22、谨记方法的重载关系。

23、封装的概念:隐藏了实现的细节,对外提供可以访问的方式,便于调用者的使用。封装的好处:提高代码的复用性和安全性。

24、private成员修饰符,不修饰局部变量。 

25、this关键字指向当前对象,类中变量存储于堆内存,与方法内变量有区别。

26、继承的出现提高了代码的复用性,从而提高软件开发效率。让类与类之间产生了关系,提供了多态的前提。

27、java只支持单继承,不支持多重继承,也就是子类不能有两父类,不过java可以多层继承。爷爷--父亲--孙子。

28、类的变量的就近访问原则。

29、super表示当前对象中包含父类对象空间的引用。

30、子类(派生类),父类(超类、基类)。

31、方法重写(Override),子类重写父类方法,与方法的重载(overLoad)有区别。

32、方法重载:方法名一样,参数列表不同,同一个类的事情。

33、方法重写:子类中出现和父类一样的方法的时候。子类重写父类的方法,覆盖。

 34、在子类方法新增功能时候,先创建同名方法sshowNum,接着第一句代码直接执行父类原有的方法super.showNum(),接着在后面增加新功能代码。

35、Sourse - 》 Generate Getters and Setters  生成抽象类私有变量的修改方法和获取方法。

36、继承的弊端:随着多态的产生,类与类之间的耦合度过高。后面讲的接口api,就可以解开类与类之间的耦合度的问题。

37、this找自己成员,super找父类成员。

38、子类重写父类方法的前提条件是,要保证子类的方法权限大于或者等于父类的方法权限。

39、java的四大权限  public protected default  private。

40、抽象类不能直接创建对象(new 对象)。

41、抽象类也可以做一个中间层的适配器出现。

42、java引用类型:类、数组、接口。

43、接口的应用,解决了类继承的耦合度、增强了扩展性,优化了程序的设计。

44、接口理解:特殊的抽象形的类。

45、接口中定义的成员变量必须是常量。

46、类与接口的关系为实现关系,即类实现接口,实现的动作类似继承,但关键字不同,用implements

47、前面的类称之为接口的实现类

48、共性的数据定义为静态的成员变量,只要方法没有调用非静态的变量,那么该方法就要加static。这样就可以存在JVM的静态区,不进入堆内存。

49、多态调用中, 编译都看=号左边的父类,父类有,编译成功,父类没有,编译失败。

50、静态变量,在创建对象之前已存在,调用静态方法,运行看父类(原因:静态属于类,不属于对象),否则看子类,成员变量,编译运行都看父类。

51、对象的多态性,静态和对象无关,父类的引用,静态方法。

52、定义静态常量:public static final  YOUR_NAME = "内瑟斯的微笑";

53、匿名对象,,内部类;

54、外部类要使用内部类的成员,必须创建内部类对象,访问方式:外部类类名.内部类类名 变量名 = new 外部类().new 内部类();

55、同名成员变量的外部类调用  Outer.this.i  (成员变量)

56、局部内部类  调用,必须在内部方法new 对象调用内部类方法才行。

57、匿名内部类,简化问题:定义实现类,重写方法,建立实现类对象,合为一步完成 。

58、接口实现类快速写法:匿名内部类公式:new  接口名或者父类(){  重写抽象方法 }.抽象方法名()  ===》直接调用方法

59、导包:引入类所在的真正的文件夹;类的包名带着全名走。

60、权限修饰符:

 61、默认权限 default  仅限在本包内和自己使用,继承子类如果不在本包内也不能用   格式   :  i = 1;

62、protected 受保护 权限,权限只给子类  只给子类的里面!!!调用父类的受保护成员,你在另一个Test.java文件new 对象会找不到(面试会问)

63、代码块 {}  限制生命周期   类中:  构造代码块 :{}    静态代码块 :static{}     执行顺序 :静态代码块  》  构造代码块  》 构造方法

64、注意静态代码快,不管new几次对象,只执行一次。

65、使用第三方jar包(压缩包)别人用你的jar包:只需两步--》  1、把你的jar拷进项目的lib文件夹;2、Add to BuildPath 小奶瓶  再调用时候 Alt + o;

66、static修饰符修饰的是对象的共享数据,可被类名直接调用,在内存中优先于非静态的存在

67、tocharArray():字符串转数组。。      .charAt()...

68、equalsIgnoreCase()  忽略大小写。。。  toUpperCase().....substring(1)

69、线程安全(慢)StringBuffer   线程不安全(快) StringBuilder 一般用后者

70、数组遍历生产字符串,通过StringBuffer实现,可节约内存空间(因为是在字符缓冲区进行)

原文地址:https://www.cnblogs.com/ivan5277/p/9903735.html