1、 java的特点和优点
- Java语言的特点是:一次编译,到处运行,可跨平台平台;纯面向对象的语言。
- JAVA语言的优点有:内置的类库简化了开发人员的设计工作;具有较好的安全性和健壮性;开发人员不需要对内存的使用进行管理。
- 选择JAVA的原因:使用范围很广,安卓操作系统的应用软件目前大部分还是使用JAVA语言编写。
2、对面向对象的理解
面向对象是一种优秀的程序设计方法,基本核心思想是使用类、对象、继承、封装、多态等基本概念进行程序设计。它是从现实世界中客观存在的事务构造出来的软件系统,并在构造中尽可能运用人类的自然思维方式,强调直接从现实世界中的事务为中心来思考和认识问题,并根据这些事务的本质特点,把它们抽象的表示为系统中的类,作为系统的基本构成单元,使得软件系统的组件可以直接映像到客观世界,并保持客观世界汇中事务及相互关系的本来面貌。
关于继承:
- 子类拥有父类非 private 的属性和方法;
- 子类可以拥有自己属性和方法;
- 子类可以用自己的方式实现父类的方法。
3、面向对象的三大特征
面向对象的程序设计方法具有三个基本特征:封装、继承和多态。
其中,封装是指将对象的实现细节隐藏起来,然后通过一些公用的方法来访问该对象的功能;继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;多态是指子类对象可以直接赋值给父类变量,但是运行是依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时可能表现出多种行为特征。
4、 java基本数据类型
主要包括基本数据类型和引用数据类型
基本数据类型:(四小类)整数类型(byte/short/int/long)、浮点类型(float、double)、字符类型(char)和布尔类型(boolean)
引用数据类型:数组、接口和类;
补充:引用数据类型就是对一个对象的引用,对象包括实例和数组两种
5、构造方法可以实现重写嘛
不可以!因为构造方法需要和类保持同名,而重写的要求是子类方法和父类方法保持同名。如果允许构方法重写的话,那么子类中将存在于父类同名的构造方法吗,这不科学,和构造方法的要求是相矛盾的。
6、String、StringBuffer、StringBuilder区别
三者都是引用数据类型,对字符串进行相关操作的类:
- String被final修饰,是字符串常量,线程安全。被创建后,直到销毁为止,对象中的字符序列都不能被改变;
- StringBuilder和StringBuffer是字符串常量;
- StringBuilder和StringBuffer的区别表现在StringBuilder线程不安全,无同步锁,StringBuffer线程安全,有同步锁
7、==
和 equals()
的区别
二者都是java中判断变量是否相等的方式
==
运算符:
- 作用于基本数据类型时,比较两个数值是否相等;
- 作用于引用数据类型时,比较两个对象的内存地址是否相同,即判断是否为同一个对象;
equals()
方法:
- 没有重写时,object默认用
==
来实现,即比较两个对象的内存地址是否相同; - 进行重写后,一般会按照对象的内容进行比较,若两个对象的内容相同则认为对象相等,否则则不相等,
8、hashCode()
和 equals()
的关系
hashCode()
用于哈希码(散列码), equals()
用于比较两个对象的值是否相等,它们具有如下规定:
- 如果两个对象相等时,则她们必有相同的哈希码;
- 如果两个对象有相同的哈希码,但她们未必相等。
9、包装类的自动拆箱和自动装箱
包装类存在的意义:java是面向对象语言,其设计理念是“万事万物皆对象”,但8中基本数据类型却不是,它们不具备对象的特征,因此为每个基本数据类型都定义了一个对应的引用类,即包装类。
- 自动装箱:把一个基本类型的数据直接赋值给对应的包装类型;
- 自动拆箱:把一个包装类型的对象直接赋值给对应的基本类型;
- 通过自动装箱、自动拆箱功能可以简化基本类型变量和包装类对象之间的转换过程。比如,某个方法的参数类型为包装类型,调用时我们所有的数据是基本数据类型,则可以不做任何特殊的处理,直接将这个基本类型的值传入给方法即可。
10、装箱和拆箱的执行过程
- 装箱通过调用包装类的
valueOf
方法实现; - 拆箱通过调用包装类的
xxxValue
方法实现,xxx代表基本数据类型。
11、变量的分类和作用域
java中变量分为局部变量、成员变量(实例变量)、静态变量
类型 | 声明位置 | 从属于 | 生命周期(作用域) |
---|---|---|---|
局部变量 | 方法或语句块内部 | 方法、语句块 | 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 |
成员变量 | 类内部、方法外部 | 对象 | 对象创建,成员变量被创建,对象消失,成员变消失 |
静态变量 | 类内部,static修饰 | 类 | 类被加载,静态变量就有效,类被卸载,静态变量消失 |
补充:java中没有真正的全局变量,所谓的全局变量应该是成员变量
12、对面向接口编程的理解
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以大大降低程序各模块间的耦合,从而提高徐通的可扩展性和可维护性。
13、变量的本质
变量的本质:“可操作的存储空间”,空间位置确定,但里面存放的值不确定;
可通过变量名访问“对应的存储空间”,从而操纵着”存储空间的值“;
java是强类型语言,每个变量都必须声明其数据类型,变量使用前必须初始化!
14、自动类型转换
自动类型转换是指容量(表示的范围)小的数据类型可以自动转换为容量大的数据类型 ,但有可能会损失精度,入黑色虚线