Java基础知识清单

简介: 题记Java的学习都是通过Google用到什么就查什么,不成系统。虽然相比于面向对象语言C++有很大的相似性,但也有很多不同点。本文就基于《Java语言程序设计》(基础篇)过一遍基础知识点,着重过一遍C++没有的。

知识清单

1、Java语言是区分大小写的。


2、boolean类型是Java的布尔类型,区别于C++的bool类型。

特别注意,boolean类型的判定方法同C&C++,如下:


if (even) {

}

1

2

3、字符串变量相等判定,不能使用==,而应该使用equals( )或者equalsIgnoreCase( )方法。


4、字符串和数字间的转换方法


int intValue = Integer.parseInt(intString);

double doubleValue = Double.parseDouble(doubleString);

String s = number + "";

1

2

3

5、方法的静态修饰符的含义?


public static int max(int num1, int num2){

}

1

2

6、每调用一个方法时,系统会创建一个活动记录(也称为活动框架),用于保存方法中的参数和变量。

活动记录置于一个内存区域中,称为调用堆栈(call stack)


7、重载方法:方法名称相同,但是参数不同。

注意:不能基于不同修饰符或返回值类型来重载方法。


8、elementType[] arrayRefVar; 声明一个数组时并不在内存中给数组分配任何空间,它只是创建了一个对数组的引用的存储位置。

double[] myList = new double[10];


数组大小:arrayRefVal.length;


数组遍历新方法:


for (double e: mylist){

System.out.println(e);

}

1

2

3

9、对于数组类型参数,参数值是数组的引用,给方法传递的是这个引用。

参数传递的是共享信息,即方法中的数组和传递的数组时一样的。


所以,如果改变方法中的数组,将会看到方法外的数组也变化了。


10、可变长参数列表

1)只能给方法中指定一个可变长参数,

2)参数必须是最后一个参数,任何常规参数都在它之前。


11、Java运行系统会检测垃圾并自动回收它所占用的空间,这个过程称为垃圾回收(garbage collection)


12、如何判定一个变量或方法应该是实例的还是静态的?

如果一个变量或方法依赖于类的某个实例,那它应该就可以定义为实例变量和实例方法。


相反,如果不依赖于类的某个具体实例,就应该将它定义为静态变量或静态方法。


13、给方法传递一个对象,是将对象的引用传递给方法。


14、Java提供了一个将基本数据类型并入对象或包装成对象。

例如:将int包装成Integer类,将double包装成Double类,将char包装成Character类。


15、StringBuilder、StringbBuffer类可以添加、插入、追加新内容,但是String对象一旦创建,它的值就确定了。


16、继承中,关键词super指代父类,可以用于调用父类中的普通方法和构造方法。

这点不同于C++的自动调用,父类的构造方法不会被子类继承。它们只能使用关键字super从子类的构造方法中调用。


17、重写发生在通过继承关系而相关的不同类中;

重载可以发生在同一个类中,也可以发生在由于继承而相关的不同类中。


18、Java 中的所有类都继承自java.lang.Object类。


19、Java 多态和核心:父类的变量可以指向子类对象。


20、动态绑定:方法可以沿着继承链的多个类中实现。JVM决定运行时调用哪个方法。


21、final修饰符

一个被final修饰符修饰的类和方法都不能被扩展。final修饰的类是不能有父类的。

被final修饰的数据域是一个常数。


22、异常处理

最根本的优势:将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来。


23、异常处理步骤:

1)声明异常

2)抛出异常


method2() throw Exception{

if (an error occurs){

throw new Exception();

}

}

1

2

3

4

5

3)捕method()


try{

invoke method2;

}catch (Exception ex){

Process exception;

}

}

1

2

3

4

5

6

try{

System.out.println(refVal.toString());


}catch(NullPointerException ex){

System.out.println("refVar is null");

}

1

2

3

4

5

6

最好的方式:


if (refVal != null){

System.out.println(refVal.toString());

}else{

System.out.println("refVar is null");


}

1

2

3

4

5

6

24、接口Interface

使用接口或多或少有点像使用抽象类。


public interface T{

int k = 1;  //java 允许忽略 public static final

void p();  //java 允许忽略 public abstract

}

1

2

3

4

等价于


public interface T {

public static final int k = 1;

public abstract void p();

}

1

2

3

4

不能使用new操作符创建接口的实例。


一个类可以实现多个接口,但是只能继承一个父类。

定义一个接口和抽象类有如下不同:

1)变量

抽象类变量无限制;接口——所有变量必须是public static final;


2)构造方法

抽象类——子类通过构造方法链调用构造方法,

抽象类不能用new 操作实例化。

接口——没有构造方法,接口不能用new操作符实例化。


3)方法

抽象类——无限制;

接口——所有方法必须是公用的抽象实例方法。


25、类的设计原则

1)内聚性——

类应该描述一个单一的实体,而所有的类操作应该在逻辑上相互配合,支持一个一致的目的。

2)一致性——

遵循标准Java设计风格和命名习惯。

3)封装性——

一个类应该使用private修饰符隐藏其数据,以免用户直接访问它。

4)清晰性——

方法在不产生混淆的情况下进行直观定义。

5)完整性——

类是为不同的用户的使用而设计的。

6)实例和静态——

如果一个变量被类的所有实例所共享,那就应该将它声明为静态的。

7)继承和聚合——

继承 is-a(是一种)关系;

聚合 has-a(具有)关系。

8)接口和抽象类——

is-a可以使用类的继承关系建模;

is-kind-of (是一种),可以使用接口建模。


《Java语言程序设计》(基础篇)第10版 Y.Daniel Liang

小结

语言是相通的,由于大学里没有学过Java。所以,从最早的对Java 语言抵触,到Java无从下手,到项目中使用项目近一年时间,有很大收获。


但毕竟属于遇到什么查什么,学习的不够系统。


所以,借助本清单进行了系统的查漏补缺。


Next:进阶篇——《Java进阶知识清单》

相关文章
|
14天前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
74 2
|
1天前
|
安全 Java
|
24天前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
28 4
|
29天前
|
Java 调度 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第29天】 在现代软件开发中,多线程编程是一个不可忽视的领域。特别是在Java这种广泛使用的编程语言中,掌握多线程的概念和技术对于开发高效、响应迅速的应用程序至关重要。本文将深入探讨Java多线程的核心概念、实现机制以及常见问题的解决方案。我们将从基础出发,逐步揭示如何通过多线程提升程序性能,并且讨论并发编程中的挑战和解决策略。文章的目的是为开发者提供一个清晰的多线程编程指南,帮助他们在实际项目中有效地应用这些知识。
20 3
|
28天前
|
监控 IDE Java
Java中的多线程编程:基础知识与实践
【5月更文挑战第30天】 在现代软件开发中,多线程编程是提高应用程序性能和响应能力的关键。特别是在Java这样的多平台、多用途的编程语言中,掌握多线程技术至关重要。本文旨在为读者提供有关Java多线程编程的全面介绍,从基本概念到高级应用技巧,帮助初学者和有经验的开发者理解并有效使用多线程。文章不仅涉及基础理论,还包括代码示例和最佳实践,确保读者能够将知识应用于实际项目中。
|
1月前
|
Java 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第26天】 在现代计算机科学中,多线程编程是一个复杂且强大的概念。Java作为一种广泛使用的编程语言,其对多线程的支持使得开发者能够创建出更为复杂、高效和响应迅速的应用程序。本文将深入探讨Java中的多线程编程,从基础概念到实际编程技巧,为读者提供全面的理解和实践指导。
|
30天前
|
Java 程序员 调度
Java中的多线程编程:基础知识与实践
【5月更文挑战第28天】 在现代计算机科学中,多线程编程是一个重要的概念,它允许程序同时执行多个任务。在Java中,多线程编程是通过创建并管理线程来实现的。本文将介绍Java中多线程编程的基础知识,包括线程的概念、创建和控制线程的方法,以及线程同步和通信的相关技术。通过阅读本文,读者将对Java中的多线程编程有一个全面的了解,并能在实际编程中应用这些知识。
|
1月前
|
安全 Java 数据安全/隐私保护
Java中的多线程编程:基础知识与实践
【5月更文挑战第24天】 在现代软件开发中,多线程编程是提升应用性能和响应速度的关键技术之一。Java 作为一种广泛使用的编程语言,其内置的多线程功能为开发者提供了强大的并发处理能力。本文将深入探讨 Java 多线程的基础概念、实现机制以及在实际开发中的应用。我们将从线程的创建和管理出发,逐步讲解同步机制、死锁问题以及如何利用高级并发工具有效地构建稳定、高效的多线程应用。通过理论结合实例的方式,旨在帮助读者掌握 Java 多线程编程的核心技能,并在实际项目中灵活运用。
|
1月前
|
安全 Java
Java基础知识面试总结(全面,实时更新)
Java基础知识面试总结(全面,实时更新)
|
15天前
|
存储 缓存 Java
Java基础17-读懂Java IO流和常见面试题(二)
Java基础17-读懂Java IO流和常见面试题(二)
23 0