CoreJava试题1.docx
- 文档编号:4696936
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:11
- 大小:331.08KB
CoreJava试题1.docx
《CoreJava试题1.docx》由会员分享,可在线阅读,更多相关《CoreJava试题1.docx(11页珍藏版)》请在冰豆网上搜索。
CoreJava试题1
CoreJava总结:
1、java语言概述
java语言特性——它是一种简单、面向对象、分布式、解释型、稳定、安全、结构中立、易移植、高性能、多线程的动态语言
jdk、jre、jvm
GCSystem.gc()
编码(.java)——编译(.class)——运行javac编译java运行
Javac-dd:
/workspaceFirst.java
Java-classpathd:
/workspacecom.tarena.First
JAVA_HOME
CLASSPATH
PATH:
javajavcjarjavadoc
代码安全
常见包:
lang、io、net、util、sql
2、基础语法
注释:
单行//、多行/**/
---->、文档/***/
ctrl+/单行注释、取消已注释
Crtl+shift+/多行注释
Crtl+shift+\取消多行注释
标识符:
类UserAction、方法getName()、变量名name,字母、_、$开头,长度无限制,大小写敏感casesensitive
规范:
包.tarena、类(接口)、方法(变量)、常量(staticfinal)PI_MY=3.1415926
关键字50个:
volatile,transient,sizeof,const(final)、goto(break[label]、continue[label])
字面值:
true、false、null
数据类型:
8种基本类型、引用类型(对象气球)
Stringname=newString("123");
栈:
引用,基本类型inta=1;
堆:
对象Personp//声明;p=newPerson();//实例化
运算符:
A&getXXX()、A&&getXXX(),>>>(>>),instanceof(比较运算符)
false&truefalse&&true
inta=1;Intb=a+++1intc=++a+1
Bytea=1;byteb=1;
Bytec=(byte)a+b
Byted+=1.0;//因为不管运算符右边得到的是什么类型都会把右边得到的值转化为左边的类型
表达式:
由运算符、常量及变量构成
3、流程控制
if……else,switch(byte、short、int、char、枚举,long与String不可)……case(default位置不限),while,do……while,for(;;){}
break、continue
4、数组
相同类型对象的集合,对象(length属性)
数组的声明int[]a,inta[]
int[]a={1,2,3}//数组静态初始化只可在声明时初始化。
//Long[]b=a;//错误
数组的创建a=newint[5];默认初始化与类属性的默认初始化一样
数组的初始化a=newint[]{1,2,3,4,5};
声明、创建、初始化一起:
int[]a=newint[]{1,2,3,4,5}
多维数组int[][]a=newint[2][];
Int[]a[];inta[][];
a[0]={1,2,3}a[1]={2,3,4,5}
System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
java.util.Arrays查找、排序sort()
Int[][]b=Arrays.copyof(a,3);
数组---》集合:
java.util.Arrays.asList()
集合---》数组:
list.toArray()
选择、冒泡(熟记,在纸上写出来)、插入、快速见FTP
5、面向对象概论
类和对象:
类——抽象数据类型,对象——类的实例
封装(隐藏该隐藏的、公开该公开的、getter/setter、方便使用、安全考虑)——>继承(代码重用OOP、AOP,构造器不可被继承)@OverRide
——>多态(父类引用指向子类对象、编译时只能调用父类方法、运行时实际调用子类重写的方法)
Peoplep=newStudent();
P.playGame();//出错,编译器只去父类中找
P.study();//多态发生在运行期
重写:
方法名相同、返回值相同(父子类也可)、参数列表相同、访问权限不能变小、抛出异常不能扩大(父类方法抛异常、子类方法不抛异常)
重载:
方法名相同、返回值不做限制、参数列表不同(精确匹配)
static(修饰成员属性、成员方法)、final(修饰类不可被继承-String类、修饰方法不可被重写、修饰变量不可变)、abstract(抽象类可以没有抽象方法、抽象方法必须声明在抽象类中)
抽象类(有构造器、不可实例化、单继承)和接口(无构造器、多实现)——面向接口编程(jdbcAPI)
构造器:
与类名相同、没有返回值、默认构造器(空参空实现)、构造器重载
子类对象创建和初始化顺序:
*创建一个子类对象:
*1、加载父类
*2、加载子类
*3、初始化父类的属性
*4、调用父类的构造器
*5、显示初始化父类的属性
*6、执行父类构造器下面的代码执行完
*7、初始化子类的属性
*8、调用子类的构造器
*9、显示初始化子类中的属性
*10、执行子类构造器以下的代码
单类创建和初始化顺序:
类的static成员(一次)和静态语句块、属性默认初始化、构造器、显式初始化(代码块)、构造器剩余代码
this.当前对象成员、this(id,name)调用当前对象重载的构造器
super.父类对象成员、super(……)调用父类重载的构造器
Super()和this()只能出现在构造器第一行
类型转换:
高字节(父类)-低字节(子类)(强转)——instanceof
Personp=newPerson();
If(pinstanceofStudent){
Students=(Student)p;
}
运算符、反之自动类型提升
Strings=“ABC”;
Objectobj=s;
方法声明(签名):
修饰符返回类型方法名(参数列表)抛出异常{方法体}
参数传递:
值传递(ctrl+s编码习惯)
6、高级语言特性
访问控制:
private、default、protected、public(反射可以破坏封装、编译时概念)
Object:
clone(深克隆、浅克隆)、finalize(回收资源)、equals(默认实现:
==)、toString(类全限定名@hashCode的16进制)、hashCode(默认native非java语言实现)、getClass(反射相关)、wait(3个)、notify、notifyAll(线程相关)
String(方法参考API)常量池
Stringstr=newString(“abc”)创建了两个对象
Strings="abc";
Strings1="d";
Strings4="abc"+"d";
Strigns2=s+s1;
Strings3="abcd";
S2==s3
StringBuffer(线程安全、synchronized)、StringBuilder——可变长字符串
可变长参数String[]——String…
静态导入importstaticSystem.outout.println();(不建议用)
包装类——自动拆箱、装箱char——Character
int——Integer——StringPPT162
缓存范围(-128--127)
Integera=128;
Integerb=128;
a==b;
内部类:
静态、成员、局部(final变量)、匿名(无名,无构造器,无class,implments、extends关键字,继承类或实现接口)
静态内部类创建对象
newOuter.Inner()
成员内部类创建对象
(newOuter()).newInner()
枚举enum:
特殊的类、不可被继承、可以实现接口、没有“局部或匿名枚举”的概念
7、集合
自动扩容,元素类型任意,数据结构
PPT183
Queue:
FIFO
List有序、可重复:
ArrayList(数组实现、查询快、增删慢)、LinkedList(双向链表实现、查询慢、增删快)、Vector(线程安全的ArrayList)
Set无序、不可重复:
TreeSet(实现可排序SortedSet)、HashSet(通过hashCode计算位置、若位置已被占比较equals、若equals相等丢弃否则按照某种算法寻找下一位置)
Map键值对:
TreeMap(实现SortedMap)、HashMap(HashSet就是value为null的HashMap)
Iterator(用作迭代)、Iterable(Collection的父接口,方法iterator)
1、迭代器在循环外创建
2、一次循环只能调用一次next();
3、删除集合元素使用迭代器的删除方法remove();
for-each循环——用迭代器实现(数组,集合)一般用于查询,不用于删除
java.lang.Comparable(用于要插入集合的类实现)、
java.util.Comparator(用于Tree*的构造器)
8、泛型
代码安全性ClassCastException
泛型类
类型擦除——编译时概念
ArrayList
ArrayList
List
ArrayList
9、异常
PPT244
Error、Exception(受查异常,必须处理:
捕获或抛出)、RuntimeException(运行时异常,可以不处理)
try(可能出异常的代码块)——catch(捕获异常并处理printStackTrace、getCource、getMessage)——finally(final、finalize)除出现System.exit(0);代码外一定执行
自定义异常
ThrownewMyException();//100%发生异常
throwsMyException//可能发生异常
异常栈结构
常见异常:
除数为零异常,数组下标越界,类型转换异常,空指针异常,数据格式不正确
断言:
Assertionjava.lang.AssertionError–enableassertions用于调试,产品发布后关闭断言
10反射、标注
Class(基因)获得对象的三种方式:
类名.class、对象.getClass()、Class.forName();——立即/强制加载类型信息
Integer.TYPE==int.class(封装类的TYPE属性和基本类型的class相同)
Class对象的newInstance()方法得到实例
Classc=People.class;
Methodm=c.getMethod("eat",String.class);
Constructor
c.getConstructor(String.class,int.class);
Peoplep=con.newInstance("张三",20);
m.invoke(p,"eat");
newPeople().eat();
类型信息(.class文件)的运行时加载(动态加载)
反射:
获取类型信息、创建对象、破坏封装、调用方法(AOP)
标注:
Annotation特殊的接口@Test()、Method.invoke
三种类型:
标记标注、单值标注、多值标注
自定义标注@interface
常见标注:
@Override、@Deprecated、@SuppressWarning
元标注:
标注标注的标注@Retention、@Target、@Documented、@Inheried
11IO流、文件
File(exist、getAbsolutePath)文件或者目录File.Separator
IO流PPT466-468
分类:
输入流(in、reader)——输出流(out、writer)
字节流(stream)——字符流(reader、writer)(适配器模式)
节点流——包装流(装饰器模式)
newObjectInputStream(newDataInputStream……(newFileInputStream(文件路径)))
1、文件读写流FileInputStream
2、转换流InputStreamReader(编码转换)
3、数据流DataInputStream(8中基本类型)
4、按行读写流BufferedReader/PrintWriter(PrintStream)
5、对象流ObjectInputStream(必须实现Serializable)
内存-->硬盘:
1、序列化:
把对象保存到文本中
2、持久化:
jdbc、hibernate,把对象保存到数据库中
如何挑选合适的流?
静态的static
瞬时的transient
序列化——ObjectInput(Output)Stream借助反射实现实现可序列化接口
什么被序列化了:
类的全限定名、属性的类型和值(对象的状态)
反序列化要求jvm中有类的声明
Class.forName(类的全限定名);
RandomAccessFile(read、write、seek)
格式化输出/入:
Scanner、printf(“%s_%d”,”123”,12);
13多线程
线程、进程
Thread类和Runnable接口(解决了单继承问题)
状态切换PPT4357种状态sleep、yield、join、start、notify、wait
并发控制:
synchronized牺牲时间换取安全性
synchronized{
}
死锁——哲学家进餐(了解)
并发包:
ExecutorExecutorService
1,创建线程池,返回ExecutorService
newCachedThreadPool()
无容量限制,根据任务量自动创建线程
一般情况下使用
newFixedThreadPool(intnThreads)
指定容量限制的线程池
大量任务情况下使用
ExecutorService-线程池
---------------------
execute(Runnablecommand)将任务代码交给线程池,
线程之内的线程会自动执行任务的run方法
Callable(call方法解决了run方法的两个问题:
有返回值(泛型)、可以抛出异常)Future
Lock:
互斥锁、读写锁
14网络编程
Scoket
TCP/IP协议
UDP
+java.io+java.lang
注意flush
编程步骤
Sockets=newSocket();
//s.getInputStream()
//s.getOutputStream()
ServerSocketsc=newServerSocket(8080);
Socketss=sc.accept();
ss.getInputStream()
ss.getOutputStream()
15、URL
达内wd=%B4%EF%C4%DA(GBK)
oq=%E8%BE%BE%E5%86%85(UTF-8)
URLEncoder
URLDecoder
========================
Stringurl=?
name="达内"&id=1;
Stringurl1=encode(Stringurl,"UTF-8")
decode(Stringstr,Stringcharset)
注:
通过浏览器的地址栏传递的url1的话,我们需要在后台decode的2次
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CoreJava 试题