考研复试java笔记.docx
《考研复试java笔记.docx》由会员分享,可在线阅读,更多相关《考研复试java笔记.docx(27页珍藏版)》请在冰点文库上搜索。
一:
数据
1:
整形数据:
byte1字节,short2字节,int4字节,long8字节。
2:
浮点数据:
float32位,double64位,小数默认double,定义float必须加f,即floatf1=13.23f;
3:
字符型:
单引号表示字符,双引号表示字符串,int和char之间可以强制转换。
4:
常量:
用final声明,finaldoublePI=3.14。
此时对PI=2,会提示错误“不能对终态变量赋值”,但是声明语句如果是“finaldoublePI”,可以对PI赋值一次PI=3.14,
但是不能继续赋值,比如再赋值PI=2时候,就会出错。
二:
运算
1:
位运算:
~按位取反,^按位异或,<<左移,>>>右移,>>循环右移。
2:
隐式转换:
低级向高级转换,直接转换,显示转换:
高级向低级,(int)36.25f
三:
注释
1:
//单行注释,/*。
。
。
*/多行注释
四:
字符串
1:
用字符数组创建字符串
chara[]={‘g’,’o’,’o’,’d’};
Strings=newString(a);
2:
Strings=newString(“good”);
3:
用字符数组的一部分创建
chara[]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’;
Strings=newString(a,2,4);//即uden,2是开始位置,4是截取长度。
注意:
String中S一定要大写。
4:
字符串各种函数:
(1)字符串连接”+”:
s=s1+’’+s2;连接函数中非字符型数据也可以连接,intk=7;s=s1+’’+s2+k;
(2)获取字符串长度“s.length()”
(3)字符串查找“s.indexOf(s1)”,在s串中查找s1子串,
s.indexOf(s1)返回的是s1第一次出现的位置。
s.lastIndexOf(s1)返回的是s1最后一次出现的位置。
如果没查找到,返回-1
(4)获取指定位置的字符“s.charAt(k)”;
(5)获取子串“substring(3,7)”或者“substring(3)”
(6)去除前导空格和尾部空格“trim()”,s3=s.trim();执行后s长度不变,把去除空格的s赋值给s3.
(7)字符串替换“replace(‘a’,‘A’)”用A替换a,
S3=s.replace(‘a’,‘A’)
(8)判断开始和结尾(s.startsWith(“22”),s.endsWith(“22”))返回boolean型变量
(9)判断字符串是否相等。
Booleanb=s1.equals(s2)
equals()区分大小写,而equalsIgnoreCase()不区分大小写。
(10)pareTo(str2),返回1,-1,0
(11)大小写转换,
s.toLowerCase()把大写变小写
s.toUpperCase()把小写变大写
返回一个新的字符串。
(12)字符串分割
形式1:
String[]s3=s1.split(",");按照s1中的,号划分,画出来是一个字符串数组,赋给s3
形式2:
String[]s3=s1.split(",",3)按照s1中的,号划分成3段,
注意:
划分符号一定要是字符串形式,定义字符串数组的时候一定要一并的给字符串赋值String[]s3=newstring[]是错的。
5:
格式化日期:
Datedate=newDate,则date中就包含了所有的时间,然后各种date的引用,比如
stringmonth=string.format(“%tB”,date)
就是从date中提取month出来
6:
各种格式
Stringstr=string.format(“%x”,200)
200以16进制的形式放入str中。
7:
正则表达式
Stringregex=\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}
Str1.matches(regex),是否匹配正则表达式,返回布尔。
\\w意思是任意单个字符,\\w+意思是至少一个单个字符,
(\\.\\w{2,3})*\\.\\w{2,3}是为了匹配.COM或者.cn
\\.\\w{2,3}意思是任意字符出现2至3次,
(\\.\\w{2,3})*是(任意字符出现2至3次)至少出现0次。
(\\.\\w{2,3})*\\.\\w{2,3},是(任意字符出现2至3次)至少出现1次
8:
字符串生成器:
一般来说要增加字符就是s=s+‘k’,但是这样系统速度很慢,每次都要创建新的字符串,于是有了字符串生成器,创建一个字符串生成器。
StringBuilderbuilder=newstringbuilder(“”)
Builder.append(j),就是增加字符j
Builder.insert(5,“word”)在5号位插入word,插入后w位5号位
Builder.delete(5,10);删5留10
9:
计算时间
怎么计算一段代码的执行时间?
LongstartTime=System.currenttimemillis(毫秒)
{代码}
LongendTime=System.currenttimemillis
Longtime=strattime-endtime;
五:
数组
1:
二维数组的长度,b.length,指的是b的行数。
2:
使用字符串函数要importjava.util.Arrays
3:
Arrays.fill(a,8)把a数组中所有元素用8代替。
Arrays.fill(a,4,16,8)把a数组中4到16的所有元素用8代替,包括4,不包括16.
4:
排序:
Arrays.sort(a)
5:
复制:
inta[]=Arrays.copyOf(b,5);复制前5个元素
inta[]=Arrays.copyOfRange(b,5,9);
6:
查询intindex=Arrays.binarySearch(arr,0,18,8),查找之前必须要排序。
六:
类和对象
1:
构造方法:
方法有两种,成员方法和构造方法,构造方法与类同名,每当实例化一个对象的时候,就会自动调用构造方法,构造方法没有返回值
2:
静态方法:
一般方法的调用,要先申明一个class类,然后a.method,但是静态方法不用声明,直接就可以class.method。
静态方法不能直接调用非静态方法,不能使用this关键字。
七:
数字处理类
1:
数字格式化
(1)使用十进制格式化数字要
importjava.text.decimalformat
(2)deimalformat特殊字符
0:
表示一个数字,如果不存在该数字,则显示0,比如00.00,用7.5去套用,显示出来时07.50
#:
同上,但是不存在就不显示,比如##.##,用7.5套用,就是7.5
\u2030:
千分数,0.00\u2030,用0.789来套用,就是789.00%0
(3)定义一种格式,并套用该格式
Decimalformatmyformat=newdecialformat(###,###.###)
Stringoutput=myformat.format(value)
(4)math
Math的方法都是静态方法,可以直接引用,比如
Doublet=math.sin(1.23)
Doublet=math.toRadians(180)
Doublet=math.todegrees(1.23)
Doublet=math.exp(3)
Doublet=math.log(3)
Doublet=math.log10(3)
Doublet=math.sart(3)
Doublet=math.cbrt(3)
Doublet=math.pow(2,3)2的3次方
Ceil大于参数的整数,floor小于参数的整数,rint接近参数的整数,
5:
math.random()
Randomr=newrandom();
r.nextint();随即返回一个整数
r.nextint(10);随即返回大于0小于10的的整数
r.nextGaussian()按高斯分布随即产生
八:
继承
1:
继承用extends,super()调用父类构造方法,
super.do()调用父类成员方法do。
2:
重写父类,当返回值,参数类型个数次序都相同的时候,叫重构。
3:
重写父类方法,修改权限只能由小到大,譬如,父类位protected,子类只能是public,不能private。
4:
被定义为final类型的方法不能被重写。
5:
getclass,返回对象执行时的class实例
6:
向上转型:
就是一个数据原本是四边形类型的,你给他一个正方形定义,一样通过。
7:
实例:
平行四边形就是四边形的一个实例,子类是祖先类的一个实例,qinstanceofp判断q是不是p的一个实例。
8:
不定长参数:
publicstaticintadd(int...a)编译器讲(int。
。
。
a)看做(int[]a),同时也有a.length之类。
9:
接口:
只有public和abstract两种权限,接口也具有向上转型,接口也可以定义接口数组,比如有接口drawteat,可以定义drawtesta[];里面的元素可以是继承drawteat的类。
10:
多重继承,就是一个类继承自几个类,java中不允许类多重继承,但是允许接口的多重继承,
classAimplements接口1,接口2,接口3
并且,接口之间也可以相互继承
Interface接口1extends接口2
11:
import导入包,importcom.lzw就是com.lzw包中所有类都可以用,importcom.lzw.math就是只有math类可用。
12:
final定义的随机数,可以随机变化的,而staticfinal定义的随机数,出现第一次以后就定格了。
13:
被定义成private的方法被指定为final,父类中final的方法不能被覆盖。
14:
外部类不能直接访问内部类元素,要通过引用访问,例如in.y。
15:
内部类依赖于外部类,所以要先存在一个外部类对象,再类中定义一个内部类对象。
例如
outerclass.innerclassA=newouterclass.innerclass
是错的,应该
Outerclassout=newouterclass
Outerclass.innerclassB=A.newinnerclass
16:
局部内部类,在外部类的一个方法中定义内部类,则该方法外部都不能访问该内部类。
但是内部类可以访问外部类的所有成员。
17:
某个类继承内部类的必须给予这个类一个带参数的构造方法,并且该构造方法的参数类型为被继承的内部类的外部类,同时在构造方法体重使用a.super()语句。
PublicclassoutputinnerclassextendsclassA.classB
PublicOutputinnerclass(classAa)
{a.super();}
18:
异常捕获结构由:
trycatchfinally三部分
19:
exception是try代码块传递给catch代码块的变量类型,e是变量名,catch块中通常有3个函数。
e.Getmessage();输出错误性质
e.Tostring();输出异常的类型与性质
e.Printstacktrace();指出异常的类型,性质,栈层次和程序中的位置。
Exception代表所有异常,其余的还有arithmeticexception异常,也可以catch(arithmeticexceptione)
20:
自定义异常:
例如自定义一个MyException异常
先定义MyException类继承Exception,然后在类里面定义方法。
调用此异常时,就是,thrownewMyException;
21:
方法抛出异常:
staticintquotient(intx,inty)throwsMyexception
注意,在函数定义的时候用throws。
22:
集合类就是把许多数据放一起,这些数据可以组成数组类,可以链表类,可以树,可以哈希。
23:
集合类父类是collection,,下属有set,和list,set的下属有hashset,treeset,list的下属有arraylist,linkedlist。
Set不按特定的方式排序。
只是简单的加入集合类中,但是set不包含重复对象。
定义就是collectionlist=newArrayList();
操作有,add(9),remove(9),isEmpty(),iterator(),size()
Iterator是迭代器,有iteratorit=listiterator。
此时it就好像是集合里面的一个指针,有
It.hasnext(),it.next()等方法、
与数组相同,集合的索引也是从0开始。
24:
set中的treeset,使set集合在遍历集合时按照递增次序排列。
25:
反射,反射类似于调查一个类的情况,
例如,example_01类有3个构造函数,下面我要对这3个构造函数的情况进行调查
首先,我要通过example_01类生成一个Class型变量,通过这个变量可以访问example_01类的状况。
ClassexampleC=example.getClass()
解析:
定义一个Class型变量exampleC,赋值为example.getClass,以下的所有活动都通过这个Class形变量开展的
ConstructordeclaredConstructors[]=exampleC.getDeclaredConstructors();
解析:
Class型变量exampleC,并对此变量调用getDeclaredConstructors()方法,返回的是exampleC中的所有构造方法,而exampleC是example.getClass()出来的,所以返回的还是example的构造方法,返回的构造方法看做是数组元素,保存在Constructor类型的数组中declaredConstructors[];现在Constructor类型的数组中有3个元素,declaredConstructors[0]表示第一个构造方法。
。
。
下面就可以分别调查三个构造函数了。
譬如
declaredConstructors[i].isvarargs,判断是否有可变数量的参数,
ClassparameterTypes[]=declaredConstructors[i].getParameterTypes();
把构造函数的参数放进parametertypes数组中
ClassexceptionTypes[]=declaredConstructors[i].getExceptionTypes();
把构造函数的异常放进exceptionTypes数组中
declaredConstructors[i].newinstance()
执行该构造方法
26:
就好像constructor是管类中的构造函数,filed是管理类中的成员变量。
步骤与上诉完全一样
FielddeclaredFields[]=exampleC.getDeclaredFields();
27:
以上二者是访问构造方法和成员变量,现在访问方法。
MethoddeclaredMethods[]=exampleC.getDeclaredMethods();
28:
Annotation,定义Annotation类型,用@interface
@target({Elementype.field,Elementype.METHOD})
@retention(retentionpolicy.RUNTIME)
Public@interfaceA{}
定义Annotation类型A,A可以定义成员变量和方法。
A的作用范围是RUNTIME
29:
枚举定义枚举常量
Publicenumconstantstest{Constants_A,Constants_B,Constants_C}
Constantstest.values(),可以把枚举成员以数组形式返回
Constantstest.valueof(“constants_B”)将普通字符串constants_B转换为枚举实例、
Constantstest.values()[i].ordinal()
返回枚举类型中位置索引值。
30:
泛型:
泛型就是一种数据类型,这种数据类型可以被所有的数据类型所接收,一般用T表示。
Publicclassoverclass
{
PrivateTover;
…………
}
Publicstaticvoidmain(stringargs[])
{
Overvclassover1=newoverclass
}
31:
所有输入流都是inputstream和reader的子类,所有输出流都是outputstream和writer的子类。
32:
File类。
创建一个文件Filefile=newFile(“D:
/1.txt”)
33:
程序输出一个流来写入文件,
首先创建一个文件Filefile=newFile("word.txt");
然后创建对于这个文件的流
FileOutputStreamout=newFileOutputStream(file);
然后把字节型数组buy输入文件中
Bytebuy[]=”….”.getBYTEs();
Out.write(buy)
34:
从文件产生一个流,输入程序。
FileInputStreamin=newFileInputStream(file);
bytebyt[]=newbyte[1024];
intlen=in.read(byt); 、System.out.println(newString(byt,0,len));
35:
Fileoutputstream和Fileinputstream不足之处在于是按字节进行操作的,一个汉字两个字节,读取不好会出现乱码。
所以有了FileReader和Filewriter,FileReader顺序读取文件,直到源末尾或者流被关闭。
Filewriterout=newFilewriter(file);
Out.writer(s);
Filereaderin=newFilereader(file);
Intlen=in.read(s);
System.out.println(newString(byt,0,len));
36:
缓冲区I/O
Filewriterfw=newFilewriter(file)
Bufferedwriterbufw=newbufferedwriter(fw)
37:
数据输入输出流
Fileoutputstreamfs=newfileoutputstream(“word.txt”)
Dataoutputstreamds=newdataoutputstream(fs)
38:
ZIP输入输出流
fileoutputstreamfs=newfileoutputstream(“word.txt”)
ZIPoutputstreamds=newZIPoutputstream(fs)
39:
常用SWING组件
Jbutton
Jcheckbox复选框
Jcombox下拉表框
Jframe
Jdialog
Jlabel
Jradiobutton单选按钮
Jlist
Jtextfield文本框
Jpasswordfield
Jtextarea文本域
Joptionpane
40:
JFrame定义格式
JFramejf=newJFrame(title);
Containercontainer=jf.getcontentpane()
41:
setHorizontalAlignment设置文本的水平对齐方式
setHorizontalAlignment(swingconstants.center)
42:
container.setBackground(Color.white)
设置背景颜色为白色
43:
jf.setVisible(true);
jf.setSize(200,150);
44:
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
Jf的关闭方式,
关闭方式有四种
DO_NOTHING_ON_CLOSE
DISPOSE_ON_CLOSE
HIDE_ON_CLOSE
EXIT_ON_CLOSE
45:
对话框
PublicJDialog(Framef,Stringtitle,Booleanmodel)
46:
标签
PublicJLabel(Stringtext,Iconicon,intaligment)
47:
图标
通过Icon接口来实现,其中必须实现Icon的3个方法
Publicintgeticonheight()
Publicintgeticonwidth()
PublicvoidpaintIcon(componentarg0,Graphicsarg1,intarg3,intarg4)
1:
标签文字居中
Jl.setHorizontalAlignment(SwingConstants.CENTER)
jLabelj=newJLabel(“测试”,icon,SwingConstants.CENTER)
2:
容器背景
Container.setBackground(color.white);
3:
即便是对话框,也能成为容器。
4:
未设置Layout时,panel默认为流布局的.假若设置为setLayout(null),则必须给每个组件setBounds,同理,若设置了相对布局,则设置setBounds后也是无效,同理setsize();setLocation()都没用。
Frame默认的布局管理器为borderLayout
4.1:
borderLayout中添加组件如果不指定,就默认添加到center区,borderlayout每个区域只能加一个组件,如果加入多个,后面一个会把前面一个给盖住。
如果一定要多放,可以把组件放进panel中,再把panel放进区域。
5:
给标签添加图标有三步:
第一步:
获取url,
URLurl=MyImageIcon.class.getresource(“c.jpg”)
第二步:
实例化Icon
Iconicon=newImageIcon(url)
第三步:
添加图片
Jl.seticon(icon)
6:
流布局是flowlayout(2,10,10)。
2说明靠右摆放(但是依然是从左到右),两个10分别是行间距和列间距。
7:
网格布局中,