Java基础.docx
- 文档编号:27704984
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:15
- 大小:1.36MB
Java基础.docx
《Java基础.docx》由会员分享,可在线阅读,更多相关《Java基础.docx(15页珍藏版)》请在冰豆网上搜索。
Java基础
Java基础(总11页)
lJava跨平台的秘密
lJava基本概念
JVM:
Java虚拟机
JRE:
java运行时环境
JDK:
Java开发工具包
JavaSE:
JavaStandardEdition,标准版。
主要用于桌面应用程序的开发。
JavaEE:
JavaEnterpriseEdition,企业版。
它的核心是一组技术规范与指南,提供基于组件的方式来设计、开发、组装和部署企业应用。
JavaME:
JavaMicroEdition,微型版。
为嵌入式开发提供Java语语言平台。
GC:
GarbageCollection垃圾回收。
当Java虚拟机发觉内存资源紧张时,会自动的去清理无用对象所占用的内存空间。
lJDK常用命令
javac:
编译
java:
运行
javadoc:
生成java文档
jar:
运行jar文件
l一个”.java”源文件是否可包括多个类(不是内部类)有什么限制
可以,但是只能有一个public类。
lJVM能有几个实例
每个Java程序对应一个JVM实例,因此JVM实例数量取决于同时执行的程序个数。
lJava中有几种注释
.*/(多行)
/**...*/(文档)
lJava中的基本数据类型
char(中文Unicode编码Javachar类型采用UTF-16编码格式。
)
l&和&&区别
逻辑与&&短路与功能。
lJava中有没有goto
Java中的保留字。
java中没有使用。
保留字和关键字const
lJava中如何跳出当前的多重嵌套循环
break符号;
return;
异常
(0);
lswitch语句能否作用在byte上,能够作用在long上,能否作用在String上
之前只能作用在int(包含)以下。
byteshortintchar枚举
之后可以作用在String,但还是不能用Long。
lshorts1=1;s1=s1+1;有错吗shorts1=1;s1+=1;有错吗
s1+1会自动提升表达式的类型,编译报错。
s1+=1;+=是java语言规定的运算符编译器会特殊处理,编译正确。
l最有效方法算出2乘以8等于几
2<<3,位运算由cpu直接支持的,效率最高。
l存在使i+1
存在,int的最大值,加1后变为负数.
l‘a’+1);的结果是
'a'是char型,1是int行,int与char相加,char会被强转为int行,char的ASCII码对应的值是97,所以加一起打印98
l面向对象特点
封装:
也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承:
它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
多态:
子类当作父类用,实现类当作接口用。
lpublic、private、protected,默认(friendly)的修饰符作用域
类的访问权限只有两种
public公共的可被同一项目中所有的类访问。
(必须与文件名同名)
default默认的可被同一个包中的类访问。
l==和equals区别
==比较变量值是否相等
equals比较两个对象是否相等(除了String之外一般都需要自己实实现)
lif(“xyz”)){}有什么不妥之处
username可能为null,会出现空指针异常。
应该写为:
”xyz”.equals(usename)
lthis和super区别
this是代表本类对应的引用。
super是代表父类存储空间的标识(可以理解为父类的引用,可以操作父类的成员)
怎么用呢
A:
调用成员变量
this.成员变量调用本类的成员变量
super.成员变量调用父类的成员变量
B:
调用构造方法
this(...)调用本类的构造方法
super(...)调用父类的构造方法
C:
调用成员方法
this.成员方法调用本类的成员方法
super.成员方法调用父类的成员方法
lOverload和Override区别Overloaded方法是否可以改变返回值类型
Overload重载Override覆盖(重写)
重载:
同一个类中有多个同名方法。
方法名相同,参数列表不同(个数、顺序、类型)是否重载和返回值类型无关。
覆盖:
子类中方法和父类的某个方法名和参数列表完全相同。
l构造器能够被override
构造器不能被继承,所以不能被重写,但是可以被重载。
labstractclass和interface有什么区别
抽象类可以有构造函数,接口不能有。
抽象类可以有普通变量,接口不能有(publicstaticfinal)。
抽象类可以有普通方法,接口不能有(publicabstract)。
抽象类可以有静态方法,接口不能有。
一个类只能继承一个抽象类,但是可以实现多个接口。
l接口是否可继承接口抽象类是否可实现接口抽象类是否可继承具体类抽象类中是否可以有静态的main方法
接口可以继承接口。
抽象类可以实现接口。
抽象类可以继承具体类。
抽象类可以有静态main方法。
labstract的方法能否同时是static,是否可用时是native,是否可同时是synchroized
不可以,抽象方法的修饰符只能是public或者protected的。
l子类A继承父类B,Aa=newA();则父类B构造函数、静态的代代码块、非静态代码块,子类A构造函数、静态的代码块、非静静态代码块执行顺序
父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类非静态代码块->子类A构造函数
l类(class)、类库(classlibrary)、包(package)、jar(文件)这四个概概念的联系
类:
实际上是对某种事物的抽象描述。
包:
为了更好的组织类,Java提供了包机制。
类库:
用来实现各种功能的类的集合。
jar:
用于发布和使用类库,可被编译器和JVM直接使用。
l匿名内部类是否可以继承其他类是否可以实现接口
可以、可以。
l写出类的六个常用方法
(1)publicbooleanequals
比较对象的地址值是否相等,如果子类重写,则比较对象的内容是否相等;
(2)publicnativeinthashCode()获取哈希码
(3)publictoString()把数据转变成字符串
(4)publicfinalnativegetClass()获取类结构信息
(5)protectedvoidfinalize()throws
垃圾回收前执行的方法
(6)protectednativeObjectclone()throws克隆
(7)publicfinalvoidwait()throws
多线程中等待功能
(8)publicfinalnativevoidnotify()多线程中唤醒功能
(9)publicfinalnativevoidnotifyAll()多线程中唤醒所有等待线程的功能
lString、StringBuffer、StringBuilder区别
String字符串常量
StringBuffer字符串变量(线程安全)
StringBuilder字符串变量(非线程安全)
注意:
之后字符串的拼接底层使用的是StringBuilder。
l是否可以继承String类
String类是final类所以不能继承。
java还有Math、Double等类不能被继承。
lStrings=newString(“xyz”);创建了几个String对象
二个。
“xyz”放在字符串常量缓冲区。
newString放在堆里。
lStrings=”Hello”;s=s+”world”;这两行代码执行后,原始的String对象中内容到底变了没有
String被设计为不可变类。
所以没有变。
l下面语句一共创建了多少个对象:
Strings=”a”+”b”+”c”+”d”
一个对象。
编译器优化后,相当于直接定义了一个”abcd”字符串。
l数组有没有length()方法String有没有length()方法
数组是length属性
String是length()方法
l使用final关键字修饰一个变量时,是引用不能变,还是引用对象不能变
修饰一个变量时,是值引用变量不能变,引用变量指向的对象中的内容是可以改变的。
final修饰属性==常量
final修饰方法==不能被子类覆盖
final修饰类==不能被继承
l静态变量和实例变量的区别
静态变量要用static修饰,实例变量不用。
静态变量又称为类变量,不需要创建任何类的实例就能访问。
所有类的实例共用。
实例变量需要创建类的实例后才能访问,每个类的实例的都有一份自己的实例变量,不共用。
static修饰属性==静态属性(类属性)
static修饰方法==静态方法(类方法)
static修饰代码块==静态代码块
l是否可以从一个static方法内部发出对非static方法的调用
不可以。
当一个static方法调用时,可以不用创建任何实例对象。
而非static方法必须通过实例对象才能调用。
lInteger和int区别
Integer是java提供针对int的包装类。
java对8中基本数据类型都提供了对于的包装类。
Integer默认值是null,int默认值是0。
Java为每个原始类型提供了包装类型:
-原始类型:
boolean,char,byte,short,int,long,float,double
-包装类型:
Boolean,Character,Byte,Short,Integer,Long,Float,Double
l为什么为基本类型引入包装类
基本数据类型有方便之处,简单、高效。
1)但是Java中的基本数据类型却是不面向对象的(没有属性、方法),这在实际使用时存在很多的不便(比如集合的元素只能是Object)。
为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行包装,这样八个和基本数据类型对应的类统称为包装类(WrapperClass)。
2)包装类和基本数据类型之间的转换
包装类------()------>基本数据类型
包装类<---newWrapperClass(primitive)newWrapperClass(string)------基本数据类型
3)自动装箱和自动拆箱
提供了自动装箱(autoboxing)和自动拆箱(autounboxing)功能,从而实现了包装类和基本数据类型之间的自动转换
4)包装类还可以实现基本类型变量和字符串之间的转换
基本类型变量()------------>字符串
基本类型变量<(string)------------字符串
l自动装箱和拆箱有点关系的,代码如下所示:
首先需要注意的是f1、f2、f3、f4四个变量都是Integer对象引用,所以下面的==运算比较的不是值而是引用。
装箱的本质是什么呢当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,如果看看valueOf的源代码就知道发生了什么。
IntegerCache是Integer的内部类,其代码如下所示:
简单的说,如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false
l
ceil:
向上取整>12>-11
floor:
向下取整>11>-12
round:
四舍五入>12>-11
l写clone()方法时,通常有一行代码,是什么
();
首先要把父类中的成员复制到位,然后才是复制自己的成员。
浅克隆:
被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。
那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。
深克隆:
被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。
那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。
l数据结构
n线性表:
数组、链表
n栈
n队列
n树(二叉树)
前序遍历:
根-左-右
中序遍历:
左-根-右
后序遍历:
左-右-根
l给出下面的二叉树先序、中序、后序遍历的序列
先序序列:
ABDEGHCF;
中序序列:
DBGEHACF;
后序序列:
DGHEBFCA。
l某二叉树的先序遍历是12453,中序遍历是42513,那么其后序遍历是(A)
A
45231
B.
42351
C.
12345
D.
54321
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础