(1)什么是面向对象?面向对象的三大基本特征和五大基本原则?

面向对象: 是通过一个类来描述对象,用类来建立实例与实例之间的关系,面向对象程序设计的基本构成是类和对象。

面向对象开发方法: 是一种以事物为中心的编程思想,用一种更符合人们认识客观世界的思维方式进行程序设计。

三大基本特征: 封装、继承、多态         

五大基本原则: 1. 单一职责原则(SRP)

                          2. 开放封闭原则(OCP)

                          3、里氏替换原则(LSP)

                          4、赖倒置原则(DIP)

                          5、接口隔离原则(ISP)

(2)封装、继承、多态?

封装:  指属性和方法的定义都封装在类定义中,然后通过对其可见性来控制外部对类成员的可访问性。

隐藏对象内部的复杂性,只对外公开简单的接口,以便于外界使用,从而提高了系统的扩展性与可维护性。通过使用访问权限修饰符,来实现封装,Java用于限定其他对象对该类内部定义的访问权限有 public, protected, private , default 四个。

继承:  以原有的类为基础来创建一个新的子类,子类继承父类的所有特性,并可以扩充自己的特性,从而构造出更为复杂的类型。        Java采用继承机制来组织、设计软件系统中的类和接口,在java单继承树状结构中,除根父类java.lang.Object外,每个子类只能有一个直接父类,除最终类外的类都可以有多个子类。

         Java采用“extends父类名”的方式来实现单继承,采用“implements<接口列表>”的方式来实现多继承。继承可以大大提高代码的重用性和健壮性,提高编程效率,降低软件维护的工作量。

多态: 多态性是指程序中出现的方法或变量“重名”现象。

1. 方法的重载(Overload)

                                                      2. 成员方法和成员变量的覆盖(Override)

                                                      3. 对象的多态性

(3)Java如何实现平台无关性?

    平台无关性:  只要平台提供了Java的运行环境,用Java编写的软件就能在上面运行;

Java经过编译之后生成的.class的字节码文件,这些字节码文件不面向具体的平台,只面向JVM,不同平台上的JVM是不同的,但他们都提供了相同的接口,因此只要不同平台实现了它们对应的JVM,编译后的.class字节码文件就可以在该平台上运行了。

(4)Java的基本数据类型:

byte, short, int, long, float, double, char, boolean.

                                                                        整型数据的数值范围:

      类型

          占用内存大小

      数值范围

      byte

              1byte

     -2^7 ~ 2^7-1

     short

              2byte

    -2^15 ~ 2^15-1

      int

              4byte

    -2^31 ~2^31-1

     long

              8byte

    -2^63 ~2^63-1

                                                                       浮点数内存结构

 类型

位数

符号位

指数位

尾数位

float

32

1

8

23

double

64

1

11

52

(5)String的一点用法:

       字符串拼接的几种方式

1.plus方式

//当左右两个变量其中有一个是String类型时,用plus可将两个变量转成字符串并拼接。
String a = "";
int b = 3;
String c = a + b;

2.concat方式

//当两个变量都为String类型且值不为null时,可以用concat方式连接。
String m = "m";
String n = "n";
String p = m.concat(n);

  3.append方式

 

//当需要拼接至少三个量的时候,可以考虑用StringBuffer。
StringBuffer b = new StringBuffer();
b.append("a");
if(...){
    b.append("b");
}
b.append("c");
String d = b.toString();

(6)Java的一些关键字:

static:   static关键字用来区分成员变量、成员方法、内部类、初始化块是属于类的还是属于对象, 有static修饰的成员属于类,否则属于对象。static关键字不能用来修饰方法中的局部变量。

volatile:   易失, volatile关键字用于表示可以被多个线程异步修改的成员变量。

一旦一个共享变量被volatile修饰了,就具备两层含义:

                1. 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。

                2. 禁止进行指令重排序。

instanceof: 关键字用来确定对象所属的类。

transient: 短暂, 可以应用于类的成员变量,以便指出该成员变量不应在包含它的类实例已序列化时被序列化。

表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。

final:   有下面三种用法:

 1. final用在变量前面,该变量成为常量,只能赋值一次。

 2. final用在方法前面,该方法成为最终方法,不能被覆盖。

 3. final用在类前面,该类成为最终类,不能被继承。

abstract:  有下面两种用法:

 1. abstract用作方法修饰符,表示该方法为抽象方法。抽象方法只有方法的定义,没有方法的实现。

                     2. abstract用作类修饰符,则该类为抽象类,抽象类可以不含有抽象方法, 但含有抽象方法的类、继承父类的抽象方法没有完全实现抽象方法、实现接口没有完全实现抽象方法时必须声明为抽象类。

特别注意:  抽象类不能被实例化为对象,只能被其他子类继承; 抽象类中的抽象方法必须在其子类中被实现,否则该子类只能声明为abstract class; 抽象方法不能为static。

(7)Java方法的调用总结:

在Java中,访问其他类中的方法和属性有3种方式:

1. 通过 “类.方法名” “对象.方法名” 的方式访问。

2. 通过继承的方式访问。

3. 通过组合或者聚合的方式, 让另外一个类作为本类的成员。 

 

(1)调用其他包其他类中的静态方法

类名.方法名的方式调用。

包路径.类名.方法名”的方式调用。

(2)调用其他包其他类中的非静态方法

        1. 用import语句引入要调用方法的类所在的包。

类名 对象名 = new 构造方法

        3. 对象名.方法名

 (3)父类中方法的调用

super

super.方法名

(4)父类中方法的调用

this

方法名

对象名.方法名