您的位置:首页 > 编程语言 > Java开发

Java 一些基础知识

2017-05-03 20:21 381 查看
1.什么是JDK、JRE、JVM? 之间的关系是什么?
JDK: Java Development Kit --> javac命令
JRE: Java Runtime Environment --> java命令
JVM: Java Virtual Machine --> 核心虚拟机
JDK包含JRE JRE包含JVM

2.java如何跨平
4000
台,简述原理
通过javac命令 将java源码编译成与平台无关的.class字节码 然后通过java命令 调用基于不 同平台不同的JVM虚拟机 将.class转化成机器码 实现跨平台

3.什么是数组?
(简述:数组的声明、动态初始化、静态初始化、数组的遍历、查找和替换元素)
数组:是一种容器
特点:可以存放任何类型的元素 但是类型是唯一的

长度一旦初始化之后,就不能再变了 arr.length;
下标:代表可以存放元素的位置 从0开始
存入元素: arr[0] = 1;
数组的声明:int[] arr or int arr[]
数组的初始化:静态初始化--
= new int[]{1,2,3};
= {4,5,6}; 静态初始化简写方式
动态初始化--
= new int[10];//初始化系统会赋予默认值
遍历:for(int i = 0;i<arr.length;i++){}、for(int x:arr){}
查找:for + if + boolean
替换:for + if

4.冒泡排序是什么?
概念:相邻的两个元素进行比较,然后交换位置 -- 是一次冒泡
内层循环管冒泡,外层循环控制冒泡次数

5.什么是类,类和对象的关系是什么?
万物皆对象 -- 是对象都有属性和行为
对象:具有属性和行为的实体
类: 同一范围内,对象的抽象
类和对象的关系:类是模板,对象是模板生产出来的具体的事物

6.类当中有哪些成员?
属性 : 用static修饰的属性 -- 类属性 (与对象无关的)
不用static修饰的属性 -- 实例属性
方法 : 用static修饰的方法 -- 类方法
不用static修饰的方法 -- 实例方法
构造器:(又叫构造方法,实例化一个类,类产生对象的时候,约定先找到类的构造器,从构造器开始,为属性和方法等开辟内存空间)

7.什么是构造器?什么是有参构造器?
构造器:类产生对象的唯一途径 (构造器名必须与类名一致)
有参构造器作用:在实例化对象的时候,赋予初始值

8.重写是什么 重载是什么 有什么区别?
重写:(访问控制权限比父类大,返回类型比父类更具体)方法签名相同,方法体不同

重载:与访问控制符、返回值类型等无关,方法名相同,形参列表不同
区别:重写一定是子类重写父类的方法,发生在两个类里
重载发生在一个类里

9.什么是getter setter方法?
封装:把不该暴露的细节隐藏起来,使用private关键字修饰类成员。
public 属性类型 get属性名[首字母大写](){
return 属性名;
}
public void set属性名[首字母大写](属性类型 形参名称){
this.属性名 = 形参名称;
}
getter setter方法为private修饰的属性,提供了与外界沟通的渠道,并且让对属性的操作变得更加可控。

10.为什么父类中有唯一的有参构造器,子类必须要有一个有参构造器?
java规定:实例化一个类的时候,会先实例化它的父类
创建父类的对象 需要调用父类的构造器

如果父类只有一个有参构造器,那么参数只能来自于子类
子类的有参构造器 负责给父类的构造器传值 使用super调用父类构造器
super(参数名)

11.解释 this super 关键字 并举例子说明作用
this:指向当前对象(this.)
super:用于调用 父类的 属性、方法、构造器
super.toString(); // 子类重写父类的toString方法后,使用 super调用父类的toString方法
super.name; // 调用父类的name属性
super(name); // 把name的值传入父类的有参构造器中

12.解释 break continue return关键字
break:结束本层循环(注意不能单独用于if-else语句,switch-case是特例)
continue:结束本次循环,开始下一次循环
return:结束方法,并且返回值

13.什么是形参 什么是实参 关系是什么?并举例子
形参:形式参数,是在调用函数名和函数体的时候,使用的参数,目的是用来接收调用该函数时传递的参数;
实参:在内存中已经开辟了存储空间
形参和实参的关系:实参复制自己,把复制的值传给形参
基本变量: 结合图
引用型变量:结合图

14.解释方法的返回值?
哪里调用有返回值的方法,返回值就反到哪里
public int test(){
return 0;
}
test(); // 在此处返回一个0

15.简述 继承 和 多态
继承:子类继承父类,子类获得父类的成员属性,成员方法
构造器不参与继承!(父类的构造器 只能供子类调用 使用super)
子类的功能 要强于父类
*子类只能拥有一个直接父类

多态:编译类型(告诉计算机 变量属于什么类型)
运行类型(new后面的类的类型,在类实例化时候,才能确定的类型)

当编译类型 和 运行类型不同时 产生多态~ 条件如下:
1.子类继承父类
2.子类重写父类的方法
3.父类的引用指向子类的实例
4.对象的行为和子类保持一致

16.简述 抽象类 和接口

抽象类:1.有抽象方法的,一定是抽象类。
2.抽象类不一定有抽象方法(抽象类可以有普通方法)
3.抽象类不能实例化对象(抽象类的构造器只能用于被子类调用)
接口:接口代表了规范
1.接口里的属性都是静态常量 默认都是public static final修饰的
2.接口里的方法都是抽象方法 默认都是public abstract修饰的
3.接口只能继承接口,不能继承类,接口可以直接继承多个接口
4.接口里面没有构造器!
5.接口的作用,接口只能被类实现(使用implements关键字)

17.简述多态中的向上转型 和 向下转型
向上转型:父类的引用指向子类的实例
在堆中实际存在子类对象,但是声明的确实父类类型的变量
计算机认为此变量为父类类型,无法调用子类特有的方法属性等
格式:父类 父类对象 = 子类实例 ;
关于继承,从上到下继承,所以是向上转型
向上转型:将子类实例对象赋值给父类变量
向上转型后,子类重写的方法会覆盖父类的原方法,调用父类的方法时,执行的 是子类重写后的方法
向上转型后,子类的自定义方法被隐藏了

向下转型:告诉计算机,此变量实际上是哪一个子类的实例
使用 (子类类型)变量名 的形式,进行强制转换
对象名 instanceof 类--可以判断 前面对象是否后面类的实例
向下转型(强制转换)类型必须对应
当需要调用子类的自定义方法时需要向下转型
格式:子类 子类对象 = (子类)父类实例 ;(强制转换)

18.简述java含有的变量都有哪些?
基本类型--
数值型 --
整数型(byte short int long)
浮点型(float double)
字符型(char)
布尔类型--
boolean(true false)
引用类型--
类 数组 接口

19.简述java基本变量的自动转型和强制转换
byte --> short --> int --> long --> float --> double
char
byte a = (byte)123; byte b = (byte)256; // 告诉计算机开辟多大空间

20.解释final关键字
final修饰的变量:只有一次赋值的机会,赋值之后不可以再改变!
(1) final修饰类属性:必须在定义变量时赋值
(2) final修饰实例属性:可以不在定义变量时赋值
(3) final修饰的类:不可以被继承
(4) final修饰的方法:不可以被重写

21.== 和 equals方法 的区别
==:1.用于判断基本类型变量的值是否相等
2.用于判断引用类型的内存地址是否相等
equals:继承于Object类
1.默认也是判断引用类型的内存地址是否相等
2.equals可以被重写,规则可以重新定义
String类的equals方法:
String类,重写了equals方法,
判断的是字符串的字符序列的值,是否相等。
判断的是 字符串的内容是否相等

22.java访问控制权限有哪几种,访问范围是什么?
public :任意位置都可以访问
private :只能在类内访问
protected :在同一个包下,在不同包下,子类可以访问
default :(什么都不写就是default)在同一个包下可以访问

23.简述static关键字
用static修饰的属性,是类属性,在内存中只开辟一个空间,static修饰的属性不单独属于任何一个对象。
static修饰的成员,只能访问static修饰的成员。
24.No1:String str = null;No2:String str = "";
这两种定义局部变量的不同在于:null在堆内存之中是没有对象的,""在栈内存和堆内存之中都有对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: