corejava.docx

上传人:b****3 文档编号:5920144 上传时间:2023-05-09 格式:DOCX 页数:14 大小:22KB
下载 相关 举报
corejava.docx_第1页
第1页 / 共14页
corejava.docx_第2页
第2页 / 共14页
corejava.docx_第3页
第3页 / 共14页
corejava.docx_第4页
第4页 / 共14页
corejava.docx_第5页
第5页 / 共14页
corejava.docx_第6页
第6页 / 共14页
corejava.docx_第7页
第7页 / 共14页
corejava.docx_第8页
第8页 / 共14页
corejava.docx_第9页
第9页 / 共14页
corejava.docx_第10页
第10页 / 共14页
corejava.docx_第11页
第11页 / 共14页
corejava.docx_第12页
第12页 / 共14页
corejava.docx_第13页
第13页 / 共14页
corejava.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

corejava.docx

《corejava.docx》由会员分享,可在线阅读,更多相关《corejava.docx(14页珍藏版)》请在冰点文库上搜索。

corejava.docx

corejava

目录

基本类型1

整型1

浮点型:

1

布尔类型:

1

字符1

java面向对象(对象和对象的引用)1

super关键字2

继承:

2

访问修饰符:

3

static:

3

Final3

抽象:

abstract3

接口:

interface4

Object:

4

正则表达式:

4

java中的类5

时间和日期5

内部类5

集合:

6

List:

6

set:

6

Map:

6

散列表:

6

异常:

7

文件7

输入输出流8

编码:

8

线程9

反射:

9

基本类型

整型:

byte8位

short16位

int32位

long64位

java中默认是int类型

浮点型:

float:

32位

double:

64位

java中默认是double

布尔类型:

boolean:

truefalse

字符:

char:

0~65535

字面量是一个整数

以上是八种基本类型

java面向对象(对象和对象的引用)

classstudent{

intname;

intage;

intsex;

}

有了这个类(模板),就可以用它来创建对象:

studentstu1=newstudent();

通常把这条语句的动作称之为创建一个对象,其实,它包含了四个动作。

1)右边的"newstudent",是以student类为模板,在堆空间里创建一个student类的对象(也简称为student对象)。

2)末尾的()意味着,在对象创建后,立即调用student类的构造函数,对刚生成的对象进行初始化。

构造函数是肯定有的。

如果你没写,Java会给你补上一个默认的构造函数。

3)左边的"studentstu1"创建了一个student类引用变量。

所谓student类引用,就是以后可以用来指向某个

student对象的对象引用,它指向的是某个student对象的内存地址(有点C语言中指针的味道)。

4)"="操作符使对象引用指向刚创建的那个student对象。

super关键字

与this互斥

必须写在构造器的第一行

子类继承父类一定会调用父类的构造器

如果没写则默认调用父类的无参数构造器,如果父类没有无惨构造器,会报错,所以建议

父类中一般添加无惨构造器

通过super()调用父类的构造器根据参数类型调用相对应的构造函数

继承:

java中只能单继承

一个类只能有一个父类,不能多继承,一个父类可以有多个子类

1构造器是不能继承的!

2子类构造器默认递归调用父类无参数构造器。

3创建子类实例默认先递归分配父类空间

4子类实例默认是父类型的实例

5如果父类没有无参数构造器,必须显示的调用

父类有参数构造器,使用super()调用父类构造器

6为了减少麻烦,建议所有类都提供无参数构造器。

7super()必须写在构造器第一行,和this()互斥

在构造器的第一行默认存在super();

访问修饰符:

public(公共)可以任意访问

prodect(友好的)在本类,子类,同包中进行访问

default(默认的):

如果不指定访问修饰符,默认是该类型;在本类,同一包中可以访问

private(私有的):

只在本类中进行访问

建议:

类一般都是公共的,属性都是私有的.

static:

静态的公共的

1可以修饰变量,表示属于类的属性,全体实例共享一份静态

变量。

2静态变量可以使用类名访问。

3静态变量可以修饰方法,表示属于类的方法。

4静态方法可以使用类名访问。

静态方法属于类全体的公共

方法,一般都是不依赖对象工具方法。

5静态方法只能访问静态资源(属性和方法)

6静态代码块,在类的加载后执行,可以用来初始化一些

配置信息,应用的不是非常广泛的。

Final

final:

修饰的类,不能再被继承

final修饰的方法,不能再被覆盖

final修饰的变量,初始化以后不允许再被修改了

finalstaticjava使用finalstatic修饰的变量作为常量。

一般要求常量名都有大写字母

抽象:

abstract

抽象类不能实例化

1abstract修饰抽象方法,抽象方法不能有方法体

2包含抽象方法的类,一定是抽象类,使用abstract修饰

3抽象类不能直接实例化,使用抽象概念可以声明引用变量,

抽象概念的引用变量可以引用具体的子类实例。

4抽象类只能被继承,子类需要实现抽象类的抽象方法。

//1:

泛化的类型,不能创建实例

2:

半成品,完成的代码为了在子类中重用,没有完成的代码在子类中要不同的实现

3:

对子类方法的约束

接口:

interface

接口表示纯抽象的概念,没有任何具体的属性和方法

全部的方法都是抽象方法,全部的属性都是常量

接口只能被实现,一个子类实现接口必须实现接口的所有方法

一个子类可以实现多个接口,接口可以实现多继承。

接口不能被实例化

接口中声明的变量都是常量,省略了publicfinalstatic

接口中声明的方法都是抽象的省略了publicabstract

Object:

equals比较对象的内容是否相等默认比较的是==sun公司提供的内都覆盖了equals方法

==是比较的是引用地址是否相等

覆盖equals方法必须同时覆盖hashCode方法必须成对出现如果equals为true则这两个对象的hashCode值相等(不一定)

String字符串

char[]String

StringBuilder线程不安全的比StringBuffer快

StringBuffer线程安全的

方法:

append("")加长字符串insert(int,String)向字符串的位置插入字符串

delete(int,int)删除字符串的一些部分

字符串对象一旦创建,内容永远不变不变模式

不变模式引用改变(改变字符串是复制了一个副本进行改变,改变了引用)

正则表达式:

【xyz】字符集合匹配所包含的任意一个字符

[^xyz]负值字符集合匹配未包含的任意字符

[a-z]匹配指定范围内的任意字符

[^a-z]匹配任何不在指定范围内的任意字符

^p[az]以p开始后面是pa或是pz

p{3}p连续出现3遍

[0-9]{3}0到9的数字连续出现三遍的

[0-9]{6,8}0到9的数字连续6到8个

[0-9]{6,}0到9的数字在6个以上

java中的类

Object所有类的父类

包装类:

就是基本数据的对象类型

包装类是final的

包装类的对象是不改变的

包装类重写了toString()equals()hashCode()

IntegerBooleanDoubleLongShortByteFloat

时间和日期

Dated=newDate();

d.getTime();得到时间的毫秒值

d.setTime(long);设置时间

Calendarcal=newGregorianCalendar();

cal.getTime()得到日期类型

cal.setTime(Date)设置日历

DateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ss");日期格式化

format.format(Object)

format.format(Date);

Calendar

内部类

静态内部类:

静态内部类只能访问外部类的静态资源,非静态的方法可以访问静态内部类

可以使用外部类的类名访问,在类内部可以不用写类名;

成员内部类:

可以通过非静态方法进行访问,若要用静态方法进行访问

成员内部类名变量名=当前类对象.new成员内部类名();

局部内部类:

定义在方法内,只在该方法范围内有效,访问外部资源,变量前必须加final

匿名内部类:

是对继承类的实现,没有类名,省略了class关键字,{}就是类体,匿名内部类不能写构造器

每个类都会编译成一个独立的.class文件

Comparator:

比较器接口,里面定义了比较的行为和方法

集合:

List:

toArray转化为数组newArrayList(list)list的副本可以重复没有特定的顺序

Arrays.asList(ary)转化为可读的list

ArrayList实现数组非线程安全长度以50%的增加

vector实现数组的方式线程安全成倍的增加性能比ArrayList差

LinkedList双向链表的实现

set:

无序,不可以重复

HashSet:

基于HashMap实现的set集合

TreeSet:

基于TreeMap实现的set集合

Map:

HashMap:

散列表实现的Map后期的线程不安全的,速度快

Hashtable:

散列表实现的Map早期的线程安全的,速度慢

TreeMap:

二叉排序树表实现的Map

散列表:

散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。

也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

这个映射函数叫做散列函数,存放记录的数组叫做散列表。

散列因子数除容量如果容量不够就进行扩充,但要扩充就要重新散列导致性能下降,所以要减少扩充的次数,如果一次给的容量很大,比较耗内存,所以要适当。

散列值是根据本身的hashCode值%容量将其放在该容量下其索引值下

HashMap新非线程安全性能好初始容量16加载因子0.75

HashTable旧线程安全性能稍差

Collections:

sort(list)对list中的对象进行自然排序,list中的对象必须实现Comparable接口

shuffle(list)将list中的元素打乱顺序

binarySearch(list,e)在有序的list中查找e的所在位置

Iterator迭代器接口hasNext()判断下一个是否有值返回true、false

next取到下一值,游标

异常:

行为方法意外的结果

异常类一般继承与Exception

调用抛异常的方法必须处理异常

使用trycatchfinally捕获

直接再抛出异常

依赖于具体业务逻辑,灵活处理异常

Throwable

|---Error是系统不可恢复的错误,由JVM发生

||-----OutOfMemoryError堆内存溢出

|-----StackOverflowError栈内存溢出

|----Exception程序可以检查处理的异常,常见的异常常见根

|--java.text.ParseExceptionformat解析对象时发生异常

如:

Dated=dateformat.parse("2010-5-5");

|--RuntimeException非检查异常,Javac忽略对这类异常的检查,如异常抛出,异常处理

IllegalArgumentException表明向方法传递了一个不合法的参数

NullPointerException空指针异常

ArrayIndexOutOfBoundsException数组越界异常

ClassCastException类型转换异常

NumberFormatException整数转换异常

文件

Filefile=newFile();默认路径是项目下

file.mkdir()创建文件夹

file.createNewFile()创建新文件

RandomAccessFile随机文件的读和写

指针从0开始

read()读取一个字节指针向下移

seek(long)从0开始指针跳到第几个位置

write()

byte[]b="你撒地方".getBytes("gbk");得到byte数组以gbk的编码

write(buf,5,4)从数组的第五个开始写四个字节

byte[]buf=newbyte[7]一个缓冲区大小可放7个字节

read(buf);从当前位置开始将缓冲区填满

I/O

输入输出流

--------------

InputStream/OutputStream字节流

reader/Writer字符流

FileInputStream/FileOutputStream节点流/字节流

BufferedInputStream/BufferedOutputStream缓冲流/字节流为其它流提供内存缓冲以提高读写效率

当io效率差时,可考虑接入BufferedIO

默认缓冲区大小是8k字节

可通过构造方法指定缓冲区大小s

flush()-手动刷出输出流中缓冲的数据

BufferedReader/BufferedWriter缓冲流/字符流BufferedReader的readLine()

读取正行数据,不包含末尾换行符

InputStreamReader/OutputStreamWriter转换流

DataInputStream/DataOutputStream字节流/处理流以字节方式读写基本数据

如果读写的数据具有固定的字节格式,可选用DataIO

PrintStream/PrintWriter打印输出流

ObjectOutputStream/ObjectInputStream字节流

1,序列化的对象必须实现Serializable接口

2,writeObject(Object)序列化对象

3,readObject()反序列化对象

4,static和transient成员不序列化

5,对象中成员类型也必须是可序列化的

java中实现的都是浅层复制

例如

在数组中

ary.clone()

Arrays.copyOf(ary,length);实现的都是浅层复制

在对象序列化和反序列化后得到的对象是深层复制,对象序列化不仅保留一个对象的数据,而且递归保存对象引用每个对象的数据。

序列化:

就是为了保存内存中的对象,并且可以把保存的对象读出来

在没有序列化之前,每个保存在堆中的对象都有自己的状态,在序列化之后保存在一个文件中,当读取的时候在对内存中重新创建原来的对像(这两个对象的引用不同)

编码:

就是将文字进行序列化时候的规则

文字在内存中是char[]序列化以后是byte流(序列)

char[]数组转化成byte[]数组的过程

gbk1个英文一个字节汉字两个字节

utf-16所有文字都是双字节

utf-8英文1个字节,汉字三个字节

线程:

是进程中并发运行的过程(方法),线程并发也是通过分时共享cpu时间实现,线程属于进程

同步:

步调一致的顺序,如,上公交车,一个一个上,A线程请求某个资源时,该资源正在使用,因为同步机制的存在,A线程请求不到,A线程只能等待。

安全

异步:

步调不一致的同时执行,如:

大家一起上卡车,A线程请求某个资源时,该资源正在使用,因为没有同步机制的存在,A线程依然请求的到,无需等待。

不安全

线程的同步:

反射:

java.lang.class描述一种数据类型

8种基本类型

引用类型

类接口枚举数组

void

可以通过以下三种方式得到class获得某一个类的class对象

Class.forName("包名.类名");一般是接口和类枚举Anoation

类名.class全部

对象名.getClass()实现类

动态获取类的信息,以及动态调用类的方法和功能来源于java反射机制

反射机制主要提供以下功能:

1:

在运行时判断任意一个对象所属的类

2:

在运行时构造任意一个类的对象

3:

在运行时判断任意一个类的所有成员变量和方法

4:

在运行时调用任意一个对象的方法(注:

是在运行时,不是编译)

反射APIjava.lang.reflect

Class类:

代表一个类

Filed类:

代表类的成员变量,提供有关类或接口的属性信息,以及对它的动态访问权限。

反射字段可能是一个类属性和实例属性

Method:

代表类的方法

Constructor类:

代表类的构造方法

Array类:

提供了动态创建数组,以及访问数组元素的静态方法,该类中的所有方法都是静态方法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2