.一 基础部分
1 什么是面向对象?
①面向对象是基于面向过程的更符合我们思维习惯的编程思想
②它将复杂的东西简单化
③它将我们从执行者变成了指挥者
2 Java三种技术框架?
①JavaSE 就是我们基础班学习的知识,是另外两种框架的基础
②JavaEE 主要做一些企业级的web应用
③JavaME 主要应用于小型的电子嵌入式设备
3 JRE与JDK的区别?
①JRE是Java程序的运行环境,包括JVM以及核心类库
②JDK是开发工具包,包括编译、打包工具等多种与开发相关的工具,内含JRE
4 栈内存和堆内存的区别?
①栈内存的数据结构特点是先进后出,它主要存放一些局部变量以及方法参数,这些变量随着使用完毕就会被清除
②堆内存主要存放的是new出来的对象,是可以反复使用的,并且都有默认初始值,使用完毕后不会马上消失,而是等系统有空的时候调用垃圾回收器回收
5 基本数据类型?
一共有四类八种,分别是整型、浮点型、布尔型、字符型
整形包括long、int、short、byte,其中int是默认类型
浮点型包括double、float,其中double是默认类型
6 &与&&的区别?
两者都可以作为逻辑运算,但是&还可以作为位运算
二 面向对象
-1 什么是构造代码块?
在类中没有方法声明,只被一对大括号括起来的方法体,就叫做构造代码块
执行顺序:静态代码块>构造代码块>构造方法
0 静态变量与实例变量的区别?
①调用不同:静态变量可以通过类名调用,但是实例变量只能通过对象调用
②改变不同:多个对象的实例变量是互不影响的,某个对象实例变量的改变是不影响其他实例变量的
,但是静态变量是被类的所有成员共享的,某个对象静态变量的改变是影响其他对象的静态变量的
③内存位置不同:静态变量存储在方法区,随着类的加载而存在,实例变量存储在堆内存,随着对象的创建而存在
④生命周期不同:静态变量的生命周期取决于类的引用是否消失,实例变量的生命周期取决于对象是否调用完毕
1 成员变量与局部变量的区别?
一共有四个区别
①定义位置不同,成员变量定义在类中方法外,局部变量定义在方法内
②内存外置不同,成员变量存储在堆内存中,局部变量存储在栈内存中
③生命周期不同,成员变量随着对象的创建而存在,随着对象的消失而消失,局部变量随着方法的调用而存在,随着方法调用完毕而消失
④初始值不同,成员变量有默认初始值,局部变量必须给予初始值才能使用
2 什么是封装
隐藏实现细节,对外提供公共的访问方式的做法,就是封装
3 封装的好处
①提高了代码的复用性
②提高了代码的安全性
③隐藏了实现细节,对外提供公共的访问方式
4 静态的特点?
一共有四个特点
①随着内的加载而加载
②优先于对象存在
③被类的所有成员所共享
④可以通过类名调用
5 什么是继承?
多个类有一些共性,将这些共性单独抽取出来放到一个类中,然后将这多个类与单独的这个类产生一个关系,那么这多个类无需再定义这些共性,这个关系就叫做继承
6 继承的好处?
①提高了代码的复用性
②提高了代码的维护性
③是多态的前提
其弊端是打破了封装,增强了耦合性,我们编程追寻的原则应该是高内聚、低耦合
7 继承的特点?
①不能多继承
②可以多层继承
8 继承的注意事项?
①子类不能继承父类的私有成员
②子类不能继承父类的构造方法
③不要为了部分功能去继承
9 Overload和Override的区别?
①Overload是方法重载的意思,它是指两个方法的方法名一样,但是参数列表不一样的现象,和返回值没有关系
②Override是方法重写的意思,它是指子类或者实现类拥有与父类方法声明一样,但是方法体不一样的现象
10 final关键字的特点?
①它修饰的类不能被继承,比如String、StringBuffer、StringBuilder
②它修饰的方法,不能被重写
③它修饰的变量,是个常量,是不能修改值的(引用类型的值指的是地址值)
11 什么是多态?
指同一个对象在不同时刻体现出来的不同状态
12 多态的前提?
①要有子类继承父类或者实现接口的关系
②要有父类或者父接口引用指向子类
③要有方法重写
13多态的好处?
①提高了代码的复用性
②提高了代码的拓展性
14 多态成员的访问特点?
①成员变量
编译看左边,运行看左边
②成员方法
变量看左边,运行看右边(因为有方法重写)
③静态方法
编译看左边,运行看左边
④构造方法
子类的构造方法都会默认去访问父类的构造方法
15 什么是抽象类?特点?成员特点?
把多个共性的东西提取到一个类中,这是继承的做法。但是有些时候这多个共性的东西,方法声明一样,
但是具体实现不一样,所以我们在定义这些共性东西的时候,就不能给出具体的实现。而一个没有具体实现的方法就是抽象方法,一个拥有抽象方法的类就是抽象类。
特点:
①抽象类和抽象方法必须用abstract修饰
②抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类
③不可以被实例化
④抽象类的子类如果是一个具体类,这个具体类必须要重写抽象类中的所有抽象方法
成员特点:
①成员变量:可以是常量,也可以是变量
②成员方法:可以是抽象的,也可以是非抽象的
③构造方法:有构造方法
16 什么是接口?特点?成员特点?
如果一个抽象类中的所有方法都是抽象的,则这个抽象类就应该定义成接口。
特点:
①被关键字Interface修饰
②实现它的时候用关键字implements修饰
③不可以被实例化
④它的实现类如果是一个具体类,这个类必须重写接口中的所有抽象方法
成员特点:
①成员变量:是个常量,默认public static final修饰
②成员方法:是个抽象方法,默认public abstract修饰
③构造方法:没有构造方法
17 接口跟抽象类的区别?
成员区别、关系区别:类与类,类与接口,接口与接口、设计理念区别
17 权限修饰符?状态修饰符?抽象修饰符?
①public、pretected、默认的、private
②static、final
③abstract
18 局部内部类访问局部变量的问题?
局部内部类不能访问局部变量。因为它们的生命周期不一样。局部内部类虽然是在局部,但它依然是个类,存储在方法区,其生命周期取决于类的引用是否消失,而局部变量存储在栈内存。当局部变量使用完毕之后,就会弹栈,就会被清楚,当它清楚后就会出现内部类调用已经消失的局部变量的局面,这不符合我们的逻辑,所以不能访问局部变量。
解决办法:在局部变量前加final修饰,这样存局部变量的值就会变成一个常量,其值直接存储在常量池
三 API
1 String s = new String"hellow"与String s = "hellow"的区别?
前者创建了两个对象,一个是"hellow",另一个是new String
后者只创建了一个对象,就是"hellow"
2 String、StringBuffer、StringBuilder的区别?
它们都是Java给我们提供的类,但是String中的内容是固定不可以被改变的
而StringBuffer、StringBuilder是字符串缓冲区,它们的内容是可以被改变的
StringBuffer与StringBuilder的区别在于 前者是线程安全,效率低的;后者是线程不安全,效率高的
3 StringBuffer(或者StringBuilder)和数组的区别?
它们都是可以存储元素的容器,但是前者存储的数据最终都是字符串数据,而后者存储的是同一种数据
由于内容较多,有字节限制,所以分为3个贴
|
|