版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
王利在个人股修有限公司
北京市
java学习笔记王利江
一、编程步骤
1.首先确定要写那儿个类
2.每个类有哪些属性和方法
3.每个类有什么样的构造方法
4.实现方法体
二、循环一般不要使用嵌套,如果必须使用嵌套,嵌套最多不超过两层。
三、I/O的使用方法
1.找节点流
2.找过滤流
四、在使用对象作为方法的参数时最好使用多态,即尽量用父类或所实现接口
作为参数
王利江个人股份有限公司
java学习笔记王利江
Java基础笔记
1、Java中标识符的命名规则。
(1)java中的标识符只能由字母、数字、下划线和美元符号$组成。
(2)标识符的第一个字母必须是字母或下划线,不能是数字。
(3)Java中的标识符严格区分大小写。
(4)标识符的要有一定的意义,标识符的长度应当符合“min-length&&
max-information"原则。
2、Java中的基本数据类型所占存储空间大小固定,不随操作系统的变化而变化,
java的这种不变性是java具有可移植性的原因之一。
3、Java中的数据类型都有正负之分,不存在无符号数,新类的成员对象通常被定
义为private类型。
布尔型占的存储空间的大小没有明确指定,仅定义为能够获取代表true或
false的值。
4、Java中的基本数据类型都具有一种包装器类,可以将对应的基本类型转换为相
应的对象类型。
5、Java中的基本数据类型的默认值
基本类型默认值
booleanfelse
char'\u0000'(null)
byte(byte)O
Short(short)0
int(int)0
long0L
floatO.Of
doubleO.Od
6、Java中的局部变量在使用前必须进行初始化,否则就视为错误。
王利江个人股份有限公司
java学习笔记王利江
7、方法的的基本组成部分包括:名字、参数、返回值和方法体,方法名和参数表
组合在--起唯一标识一个方法。
8、除内部类外,类的修饰符只能是public或default,数据的访问权限修饰符可
以使public>protected、default^1privateo类就是由数据成员和方法成员共同组成
的。
10、java中的static域是属于整个类的域,只有一个内存空间,所有的对象共享这
个内存空间,而非static域对每个对象都各自存储空间,互不干扰。
II、java中的注释分为三种行注释、块注释、文档注释(javadoc),其中javadoc只能
为“publie(公共)和protected(受保护)”成员进行文档注释。
12、java中的命名规则:类名首字母大写,如果类名有儿个单词构成,把他们并在
一起(不要用下划线分割名字),其中每个内部单词的首字母都大写;方法、域和对
象引用名称和类名一-样,只不过首字母小写。
13、在java中要比较两个对象的实际内容是否相等用euals()方法,如:比较nl
=newInteger(47)和n2=newInteger(47)的内容是否相等为:nl.equals(n2);返回
true;不过这个方法不适用于“基本类型”,基本类型用“=="和"!=”即可。但是
如果你创建了自己的类结果就不一样了如:
classValue
(
inti;
)
Valuevl=newValue();
Valuev2=newValue();
vl.i=v2.i=100;
vl.equals(v2);返回为鱼Ise。
14、在任何循环语句的主体部分,都可以用break和continue控制循环流程。其中
break用于强行退出循环,不执行循环中剩下的语句。而continue则停止执行当前的
迭代,然后退回循环起始处,开始下一次迭代。
15、开关选择语句
switch(integral-selector)
王利江个人股份有限公司
java学习笔记王利江
Caseintegral-value1:statement;break;
Caseintegral—value2:statement;break;
Caseintegial—value3:statement;break;
Defoult:statement;break;
)
其中“整数选择因子(integral—selector)”是一个能够产生整数值的表达式,
必须是char型和int(int、short>byte>long)型两种。
16、将一个float或double类型转换为整型时,总是将小数部分砍掉(不会进行四
舍五入),Math.random()的输出值范围是[0,1)。
17、如果在类中没有构造方法,编译器会自动创建一个缺省的构造方法(无参构造方
法),如果已经定义了构造方法(无论是否有参数)编译器就不会在创建默认的构造
方法。
18、this关键字只能在方法内部使用,表示“调用方法的那个对象的”引用,即表
示对当前对象的引用。
19、类中属性的访问权限一般为:private和protected,其中使用protected是为了让
子类能够使用父类的对象。方法一般用:public。
20、在static方法中,只能使用静态变量(static),而在非静态的方法中可以使用静
态变量。
21、java中的垃圾回收器只能释放有new分配的内存,假设你的对象获得了一块非
new分配的“特殊”内存区域,垃圾回收器不知道如何释放该对象的这块“特殊”
的内存,为了应对这种情况,java中允许你在类中定义一个名为finalize。的方法。
它的工作原理“应该”是这样的:一旦垃圾回收器准备好释放对象占用的存储空间,
将首先调用其finalize。方法,并且在下一次垃圾回收动作发生时,才会真正回收对
象占有内存。
22、用final修饰的变量,如果该变量在定义口寸没有被初始化,那么就只能在构造方
法中赋值,而且一旦赋值后就不能再被改变,final修饰的变量没有默认值。
王利江个人股份有限公司
java学习笔记王利江
23、如果一个用fnal修饰的变量在定义时就被初始化,一般加上static修饰符,如:
privatestaticfinalintflag=l;
24、java中的数组最后一个元素为数组的长度,即:
Stringf]str=newStringflO];则str[10]存放的是数组的长度:str.length
数组的声明和创建有四种方式:
⑴、int[]i=newint[3];
(2)、int[]ii={10,20,30};
(3)、int[]iii;
Iii=newint[3];
(4)、int[]iiii;
iiii=newintf]{10,20,30);
数组拷贝函数(System.arraycopy)
staticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,
intdestPos,intlength)
Copiesanarrayfromthespecifiedsourcearray,beginningatthe
specifiedposition,tothespecifiedpositionofthedestinationarray.
Parameters:src-thesourcearray.
srcPos-startingpositioninthesourcearray.
dest-thedestinationarray.
destPos-startingpositioninthedestination
data.
length-thenumberofarrayelementstobecopied.
Throws:IndexOutOfBoundsException-ifcopyingwouldcause
accessofdataoutsidearraybounds.
ArrayStoreException-ifanelementinthesrcarray
couldnotbestoredintothedestarraybecauseof
atypemismatch.
NullPointerException-ifeithersrcordestis
null.
使用方法维:System.arraycopy(参数列表);
25、java中的二维数组在创建是必须指定第一维的长度,第二维的长的可以不一样,
如下:
int[][]a=new13川;
王利江个人股份有限公司
java学习笔记王利江
a[0]=newint[5];
a[l]=newint[4];
a[2]=newint[3];
26、继承:Java中如果有继承存在,那么被继承类(父类)中必须有“无参构造
函数”,除非在子类的所有构造方法中使用super(参数列表);显示的调用父类的
构造方法而且super必须是第一条可执行语句,否则子类在继承父类时就会出错。
静态方法在继承时,子类在创建内存空间时,父类和所有子类共用一块内存空间,
而不会开辟两块内存空间。
备注:子类构造方法在调用时,都会自动调动父类的某个构造方法,因为子
类在初始化时,必须初时化从父类那里继承来的属性和方法。
java中类与类之间的继承是一对一的,而接口的继承是一对多的。子类
只能抛出和父类相同的异常或比父类少的异常。
27、java中的类有两种类型,编译期类型和运行期类型。Empoyee为父类,Sales
为子类,父类对象可以指向子类对象但子类对象不能指向父类对象,子类对象要想
指向父类对象必须进行强制类型转换。
编译期类型是在程序编译时,java虚拟机进行语法检查要检查的类型,运行期
类型是在程序运行时,java虚拟机运行程序时要使用具体类型。
30、static>final、abstract区别
修饰的属相和方法属于整个类的属性和方法,在创建类的对
Static1.static
象时只开辟一块内存空间,所用对象共用这块内存空间。
2.静态初始化块的使用:
Static{初始化代码}
修饰的变量是常量,其值不能在被改变。常量的只能初始化一
Final1.fianl
次,其后只不能再被改变,而且初始化只有两种方式:一、在定义
的时候初始化。二、在类的构造函数中初始化。
2.fianl修饰的方法为最终方法,不能被覆盖但可以被继承。
王利江个人股份有限公司
java学习笔记王利江
3.final修饰的类为最终类,不能再被继承。
Abstract1.abstract修饰的类为抽象类,不能实例化
2.abstract修饰的方法为抽象方法,抽象方法只有方法头没有方法
体,在子类的类中必须实现父类的所有抽象方法。即:抽象类中
不一定有抽象方法,但有抽象方法的类必须声明为抽象类。
33、==和equals(Object中的)比较的都是虚地址
toStringO一分类型@虚地址。(对象类型转换成字符串后的格式)
hashCode()—^把对象的虚地址转换成整数
31、java中初始化块的使用
非静态初始称为“实例化块(block)”由构造函数自动调用(必须自动调用),而
且每调用一次构造函数就执行一次。并且只能在类体中通过一对大括弧
化块来实现,在类中的其他地方不能使用它。“非静态初始化块”如下所
示:
{//初始化代码}
静态初始化块静态初始化块由static定义,也是由构造函数自动调用(必须自动调用),
但是不管构造函数调用多少次,静态初始化块只初始化(执行)诙,
static而且所有的对象共用块内存空间。只能在类体中通过一对大括弧来实
现,在类中的其他地方也不能使用它。
“静态初始化块”如下所示:
Static{〃初始化代码}
32>java.util.Arrays类
java.util.Arrays类介绍。
publicclassArraysextendsObject
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许
将数组作为列表来查看的静态工厂。除非特别注明,否则如果指定数组引用为null,
则此类中的方法都会抛出NullPointerExceptiono
此类中所含方法的文档都包括对“实现”的简短描述。应该将这些描述视为“实
现注意事项”,而不应将它们视为“规范”的一部分。实现者应该可以随意替代其
他算法,只要遵循规范本身即可。(例如,sort(Object:])使用的算法不必是一个
合并排序算法,但它必须是稳定的。
王利江个人股份有限公司
java学习笔记王利江
,java.util.Arrays类中的常用方法。
staticListasList(Object[]a)
Returnsafixed-sizelistbackedbythespecifiedarray.
staticbooleanequals(boolean[]a,boolean[]a2)
Returnstrueifthetwospecifiedarraysofbooleansare
equaltooneanother.
staticbooleanequals(char[]a,chart]a2)
Returnstrueifthetwospecifiedarraysofcharsare
equaltooneanother.
staticbooleanequals(double[]a,doublet]a2)
Returnstrueifthetwospecifiedarraysofdoublesare
equaltooneanother.
staticbooleanequals(float[]a,float[]a2)
Returnstrueifthetwospecifiedarraysoffloatsare
equaltooneanother.
staticbooleanequals(int[]a,int[]a2)
Returnstrueifthetwospecifiedarraysofintsare
equaltooneanother.
staticbooleanequals(long口a,long[]a2)
Returnstrueifthetwospecifiedarraysoflongsare
equaltooneanother.
staticbooleanequals(Object口a,Object[]a2)
ReturnstrueifthetwospecifiedarraysofObjectsare
equaltooneanother.
staticvoidsort(type口a)type为基本数据类型
Sortsthespecifiedarrayofbytesintoascending
numericalorder.
staticvoidsort(Object[]a)
Sortsthespecifiedarrayofobjectsintoascending
order,accordingtothenaturalorderingofitselements.
staticvoidsort(Object[]a,Comparatorc)
Sortsthespecifiedarrayofobjectsaccordingtothe
orderinducedbythespecifiedcomparator.
staticvoidsort(short[]a)
Sortsthespecifiedarrayofshortsintoascending
numericalorder.
使用java.util.Arrays类中的sort()方法排序
王利江个人股份有限公司
java学习笔记王利江
(1)整数排序staticvoidsort(int[]a);
importjava.util.Arrays;
publicclassTestArrays{
//整形数组排序
publicstaticvoidprintArray(int[]arr){
For(inti=0;i<arr.length;i++){
System.out.print(""+arr[i]);
if((i+1)X5==0){
System.out.printIn();
}
publicstaticvoidmain(String[]args){
mt[]arr={12,45,19,15,32,95,56,48,73,61};
System.out.printIn("Arr^y^beforesort():");
printArray(arr);
Arrays.sort(arr);//调用Arrays.sort.(int[]a)羽E序
System.out.printIn("AiTaveAfter^ort।):");
printArray(arr);
}
}
注:整形数组排序默认是按数组元素的大小降序排列
(2)字符串排序staticvoidsort(object[]a);
importjava.util.Arrays;
publicclassTestArrays{
publicstaticvoidprintstring(String[]arr){
for(inti=0;i<arr.length;i++){
System.out.print(""+arr[i]);
if((i+1)%5==0){
System.out.printin();
}
}
}
publicstaticvoidmain(String[]args){
u71uu
String[]arrayStr={bcb,ded/'tat","sfs"r;
System.out.printIn("Arraysbeforesort():");
printstring(arrayStr);
Arrays.sort(arrayStr);
System.out.printIn("ArraysAftersort():");
printstring(arrayStr);
)
)
王利江个人股份有限公司
java学习笔记王利江
(3)用Comparable接口实现对象Course类型的数组按课程的价格排序
//实现Comparable接口的Course类对象定义
importjava.util.Arrays;
publicclassCourseimplementsComparable(
privateStringtitle;
privatedoubleprice;
publicCourse(Stringtitle,doubleprice){
this.title=title;
this.price=price;
1
publicStringgetTitle(){
returntitle;
I
publicdoublegetPrice(){
returnprice;
}//实现接口中的抽客方法,按价格升序排序
publicmtcompareTo(Objectobj){
Coursecs=(Coursejobj;
if(this.price>cs.getPrice()){
return1;
}elseif(this.price<cs.getPrice()){
return-1;
}else{
return0;
}//实现接口中的抽薮方法,按价格降序排序
z*publicintcompareTo(Objectobj){
Coursecs=(Course)obj;
if(this.price>cs.getPrice()){
return-1;
}elseif(this.price<cs.getPrice()){
return1;
}else{
return0;
}
}
//对^数组排序测试函数
importjava.util.Arrays;
publicclassTestArrays(
publicstaticvoidprintObject(Course[]cs){//打印对尊属性
for(mti=0;i<cs.length;i++){
System.out.printIn("L'cnirse'=namei?"+cs[i].getTitlef));
System.out.printIn("Priceis."+cs[i].getPrice());
)
)
publicstaticvoidobjectSort(){
Course[]course
={newCourse("JAVA",12800.0),newCourse(".1<TET'\13000.0)
H
rnewCourse("Test"z9000.0)„newCourse("Strut=z8000.0)):
System.out.printIn("Arraysbeforesort:");
printObject(course);
Arrays.sort(course);"按价格排序
System.out.printIn("Arrarj三Aftersort():");
printobject(course);
}
publicstaticvoidmain(String[]args){
objectSort();
}
)
王利江个人股份有限公司
java学习笔记王利江
用Comparable接口实现对象Course类型的数组按课程名(String)排序
//实现Comparable接口的Course类对象定义
importjava.util.Arrays;
publicclassCourseimplementsComparable{
privateStringtitle;
privatedoubleprice;
publicCourse(Stringtitle,doubleprice){
this.title=title;
this.price=price;
)
publicStringgetTitle(){
returntitle;
)
publicdoublegetPrice(){
returnprice;
}//实现接口中的抽象方法,技课程名排序
publicmtcompareTo(Objectobj)
Coursecs=(Course)obj;
return(this.title).compareTo(cs.getTitle());
)
}
”对象数组排序测试函数
importjava.util.Arrays;
publicclassTestArrays{
publicstaticvoidprintObject(Course[]cs){//打印对象属性
for(mti=0;i<cs.length;i++){
System.out.printIn("Course'snamei-"+cs[i].getTitle());
System.out.printin("Priceia"+cs[i].getPrice());
)
?
publicstaticvoidobjectSort(){
Course[]course
»{newCourse("JAVA",12800.0),newCourse(1.1TET",13000.0)
,newCourse("Test"z9000.0)^newCourse("Struts1,8000.0));
System.out.printin("Array-beforesort:");
printObject(course);
Arrays.sort(course);“按价格排序
System.out.printIn("ArraysAftersort():");
printobject(course);
)
publicstaticvoidmain(String[]args){
objectSort();
)
王利江个人股份有限公司
java学习笔记王利江
(4)用Comparator接口实现对象Course类型的数组按课程的价格(double)排序
定义用于实现的Coioe类对象
//用Comparator接口Course对薮类型定义
publicclassCourse{
privateStringtitle;
privatedoubleprice;
publicCourse(Stringtitle,doubleprice){
this.title=title;
this.price=price;
}
publicStringgetTitle(){
returntitle;
)
publicdoublegetPrice()|{
returnprice;
)
)
实现接口Comparator并定义排序规则
“定义按价格排序类,并实现Comparator接口
importjava.util.Comparator;
publicclassPriceCompareimplementsComparator]
publicmtcompare(ObjectobjObjectobj2){
Coursecsl=(Course)obj1;
Coursecs2=(Course)obj2;
if(csl.getPrice()>cs2.getPrice()){
return1;
}elseif(csl.getPrice()<cs2.getPrice()){
return-1;
}else{
return0;
}
)
}
Main函数测试排序结果
//对Course对源效组按价格排序测试函数
importjava.util.Arrays;
publicclassTestArrays{
publicstaticvoidprmtObject(Course[]cs){“打印对猿属性
for(inti=0;i<cs.length;i++){
System.out.prmtln("Titleis"+cs[i].getTitle());
System.out.prmtln("Priceis"+cs[i].getPrice());
}
}
publicstaticvoidobjectSort(){
Course[]course
={ewCourse("JAV/^.12800.0),newCourse(".NET13000.0)
znewCourse("Test,9000.0),newCourse("Struts"#8000.0));
System.out.print1n("Arraysbeforesort:");
printObject(course);
NameComparecoml=newNameCompare();//返回接口对象
Arrays.sort(course,com1);//扫E序
System.out.prmtln("ArraysAftersort(,i:");
printObject(course);
}
publicstaticvoidmam(String[]args){
objectSort();
}
}
王利江个人股份有限公司
java学习笔记王利江
用Comparator接口实现对象Course类型的数组按课程名(String)排序
定义用于实现的Coioe类对象
用Comparator接口Course对丝类型定义
publicclassCourse{
privateStringtitle;
privatedoubleprice;
publicCourse(Stringtitle,doubleprice){
this.title=title;
this.price=price;
}
publicStringgetTitle(){
returntitle;
)
publicdoublegetPrice()|{
returnprice;
)
)
实现接口Comparator并定义排序规则
//实现用于排序Comparator接口定义排序规则
importjava.util.Comparator;
publicclassNameCompareimplementsComparator{
publicmtcompare(Objectobj1rObjectobj2){
Coursecsl=(Course)obj1;
Coursecs2=(Course)obj2;
Stringnamel=csl.getTitle();
Stringname2=cs2.getTitle();
returnname1.compareTo(name2);
}
)
Main函数测试排序结果
//对Course对象数组按价格排序测试函数
importjava.util.Arrays;
publicclassTestArrays{
publicstaticvoidprintobject(Course[]cs){"打印对辱属性
for(mti=0;i<cs.length;i++){
System.out.printIn("Titleis"+cs[i].getTitle());
System.out.printin("Priceis"+cs[i].getPrice());
}
}
publicstaticvoidobjectSort(){
Course[]course
={ewCourse("JAVA12800.0),newCourse(1.HET",13000.0)
znewCourse("Test',9000.0)#newCourse("Struts"#8000.0));
System.out.printing"Arraysbeforesort:");
printObject(course);
NameComparecoml=newNameCompare();//返回接口对薮
Arrays.sort(course,com1);//排序
System.out.printIn("ArraysAftersort():");
printObject(course);
}
publicstaticvoidmain(String[]args){
objectSort();
}
)
王利江个人股份有限公司
java学习笔记王利江
33、简单选课功能实现一一分练习什么是对象即对象的应用。
(1)课程Course对象定义
//课程对最Course定义
publicclassCourse{
privateStringtitle;
privatedoubleprice;
publicCourse(Stringtitle,doubleprice){
this.title=title;
this.price=price;
}
publicStringgetTitle(){
returntitle;
publicdoublegetPrice(){
returnprice;
)
publicvoidsetPrice(doubleprice){
this.price=price;
}
}
(2)选课学员对象类Student定义
//选课学员对象类Student定义
publicclassStudent{
privateStringname;
privateCourse[]course;
privatestaticintindex;
publicStudentCS(Stringname){
this.name=name;
course=newCourse[3];
index=0;
}
publicStringgetSName(){
returnsName;
}
publicCourse[]getCourse(){
returncourse;
}
publicvoidselectCourse(Coursecs){
if(index<course.length){
course[index++]=cs;
}else{
System.out.printIn("YouhoveselectedThreecourse.");
System.out.printIn("Soyoucann'tselectmcire।");
}
}
)
王利江个人股份有限公司
java学习笔记王利江
(3)课程类Course和学员Studnet类测试函数
//课程类Course和学员Studnet类测试函数
publicclassTestStudent{
publicstaticvoidmain(String[]args){
System.out.printin("TestStudent");
Studentstu=newStudent("John");
Coursecs=newCourse("java"r12800.0);
stu・selectCourse(cs);
Coursecsl=newCourse("ASP.NET",13000.0);
stu.selectCourse(csl);
Coursecourse[]=stu.getCourse();
System.out.printIn("Sllaiue:"+stu.getSName());
System.out.printIn("CourseInfo");
for(inti=0;i<course.length;i++){
if(course[i]1=null){
System.out.print("CTirleis"+course[i].getCTitle());
System.out.printin("CPnceis"+course[i].getCPrice());
}else{
break;
}
)
Coursecs3=newCourse("SoftTesting”,10000.0);
stu.selectCourse(cs3);
)
}
34、员工类(Employee)、销售员类(Sales)和培训员类(Trainer)练习。其中
Sales和Trainer都是Employee的子类。---->练习的使用
//员工类Emp1oyee的定义
publicabstractclassE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模糊积分与多分类器融合:医疗诊断创新路径探究
- 模拟降雨条件下坡面流水力特性的多维度试验解析与规律探究
- 樟木材烫蜡表面性能优化:材料、工艺与机理探究
- 榄香烯对小鼠肝癌H22细胞增殖与凋亡的影响及机制探究
- 足屈肌腱破裂的护理
- 雨课堂学堂在线学堂云《土力学(重庆)》单元测试考核答案
- 办公用品领用审批与发放流程手册
- 酒店客房服务标准规范与培训指导
- 场景领域员工培训量化课程方案指导书
- 销售预测数据确认函(4篇范文)
- 广东省惠州市2025届高三化学下学期一模试题【含答案】
- GB/T 20165-2025稀土抛光粉
- 公司部门优化方案(3篇)
- 惠州低空经济
- 病例演讲比赛评分标准
- 学堂在线 唐宋词鉴赏 期末考试答案
- 中国移动集成公司招聘笔试题库2025
- 2024年贵州高考思想政治试卷试题及答案解析(精校打印)
- 土壤有机碳分布规律及其空间与垂向特征的解析研究
- T/CCS 055-2023燃煤电厂碳捕集-驱替采油工程项目全流程成本核算指南
- 数字化转型对企业信息披露质量的影响机制研究
评论
0/150
提交评论