《JAVA编程思想》前四章总结

这本书前四章非常的基础,所以就用一篇文章大略总结一下前四章一些重要知识点

1.JAVA的8种基本数据类型

2.static关键字的用法

static关键字,可以修饰变量、方法和静态代码块。

static关键字的基本作用,简而言之,就是方便在没有创建对象的情况下来进行调用(方法/变量)。

static修饰变量(静态变量):静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化

而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static修饰方法(静态方法):工具类的方法,不需要建立对象,直接使用“类名.方法名”的方式调用

由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

static修饰静态代码块:只会在类初次加载时候执行一次,可以用于初始化等操作

提问:若父类中有一个static静态变量,它的子类A可以继承这个static静态变量吗?如果子类A将这个变量值改变了,子类B和父类中这个变量会有影响吗?

答:子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。但是相当于这个static静态变量是唯一的,子类访问后修改了值,当然子类B和父类再访问这个变量时,值已经变了。

那如果是在接口中呢?

答:接口中的变量都会被final和static两个关键字修饰,所以无法被改变。

3.“==” 和equals方法的区别

“==”: 如果是基本数据类型,直接对值进行比较;如果是引用数据类型,则是对它们的地址进行比较。  

“equals方法”:该方法是可以覆盖重写的。如果不重写,equals方法相当于“==”即两个对象的地址是否相等。如果重写,通常我们会将equals复写成:当两个对象内容相同时,返回true,否则返回false。

 

4.foreach、普通for循环、迭代器三种的区别和这三种哪个效率高 

循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;循环LinkList时,普通for循环比foreach循环花费的时间要多很多。当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点;但是普通for循环在循环LinkList时,程序直接卡死。foreach底层就是迭代器,所以foreach和迭代器是差不多,可能在一些情况下,迭代器更优。

结论:需要循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。需要循环链表结构的数据时,一定不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。

具体地foreach和迭代器实现和知识点总结看十一章和十七章总结那篇博客。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章