java学习笔记

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.JDK2.Path环境变量是操作系统外部命令搜索路径;Classpath环境变量是类文件搜索路径。3.JRE是JavaRuntimeEnvironment,即是java运行环境。包括java虚拟机、java平台核心类文件、其他支持文件。JVM,JavaVirtualMachine。它是由软件模拟出来的计算机,软件只需编译一次就可以在不同的操作系统上运行。.javafile编译器检查语法错误.classfile,可以在各种虚拟机上运行,对于不同的操作系统有不同的虚拟机执行同样的class文件,结果相同.class文件由虚拟机翻译成适合当前操作系统的代码由操作系统交给硬件再去执行4.字符集的作用,char类型的变量可以存一个汉字(在java中,或者是uincode编码中)。5.字面量整数字面量为整型(int),小数字面量为双精度浮点型(double)。数值型类型表数范围关系:byteshortintlongfloatlong。6.面向对象(消除冗余是一种编程方法,是一种思维模式,不是一种编程语言。7.栈内存和堆内存生成对象:类名对象名=new类名();对象的本体(真正的对象)在堆内存中,对象名(引用)指向堆内存中的本体,在栈内存中开辟一块空间,放对象名;源文件检查错误字节代码用户启动程序WindowsJVM(1)IosJVM(3)LinuxJVM(2)软件JVM操作系统8.重载的定义:两个或者多个函数在同一个类当中,函数名相同,参数列表不同。9.构造函数——无实参,有实参。10.thisa.使用this调用成员变量和成员函数,this代表调用当前成员变量或函数的对象;b.使用this调用构造函数this(参数列表),调用构造函数必须是构造函数中的第一条语句。11.statica.静态变量声明[staticinti;]调用:既可以用类名调用也可以用对象调用;所有的对象所用的静态变量都是同一份,任何一个对象的静态变量得到修改,其他对象的静态变量也会跟着修改。b.静态函数声明[staticvoid函数名();]静态函数也可以用类名来直接来调用;在静态函数当中不能引用非静态的成员变量。c.静态代码块格式[static{…}]主要作用是为成员变量赋初始值,在装载的时候执行。12.继承extends在java中只支持单继承(一个子类只能继承一个父类,不允许多继承)【在c++中一个子类可以继承多个父类】;使用继承是为了减少重复代码。13.在子类的构造函数当中,必须调用父类的构造函数,不写的话,编译器会加一行代码super(),自己写的话必须是构造函数的第一行代码;若是想自己调用父类的构造函数,在括号里边加上参数就可以。【注意】和this的不同,this是调用本类中的构造函数。原因:消除重复代码14.函数的复写(override)复写(在两个类中)也被称之为覆盖,重写。【区别】重载(在一个类中,函数的名相同,参数不同)语法特征:a.在具有父子关系的两个类当中;b.父类和子类各有一个函数,这两个函数的定义(包括返回值类型,函数名字,参数)完全相同,里面的方法块不一样。15.使用[super.父类成员函数]可以调用父类的方法(当在重写写父类的方法时可以用来消除重复)。16.对象的转型(多态性的体现)向上转型——将子类的对象赋值给父类的引用。一个引用能够调用哪些成员(包括变量和函数)取决于这个引用的类型。一个引用的调用的是哪一个方法取决于这个引用所指向的对象。向下转型——将父类的对象赋值给子类的引用。过程:先把对象向上转型,在向下转型。例如:Person是父类,Student是子类Students1=newStudent();Personp=s1;Students2=(Student)p;17.抽象函数——只有函数的定义,没有函数体的函数。声明:[abstractvoidfun();]。18.抽象类——使用abstract定义的类a.抽象类不能够生成对象b.如果一个类中包含抽象函数,那么这个类必须被声明为抽象类c.如果一个类中没有抽象函数,这个类也可以被声明为抽象类19.抽象类不能生成对象,但是却可以拥有构造函数。20.为什么要用抽象类?【原因之一】如果一个类的某一个函数,这个函数必须由它的子类来实现,我们无法写出子类通用的一个函数,最好的方法就是把这个函数定义为抽象函数,并且把这个类定义为抽象类。这样就会强制要求在子类继承这个函数的时候对这个抽象函数进行复写(override)。21.如果一段代码在语义上是有错误的,那么在语法上也应该有错(现在编程理论认为,但实际上可能没实现)。22.软件包——为java类提供了命名空间将类放置到一个包当中,需要使用[package包名;]编译时需要使用–d参数,该参数的作用是依照包名生成相应的文件夹。-d后面是一个目录。例如:javac–d.test.java,“.”代表当前目录。一个类的全名应该是“包名”+“.”“类名”。23.包名的命名规范:1.要求所有的字母都小写;2.包名一般情况下,是你的域名倒过来写,例如baidu.compackagecom.baidu;24.Java当中的访问权限:(体现面向对象的封装性)1.public:可以修饰类、成员变量和成员函数,没有任何限制,在同一个包中,或不同包中的类都可以自由访问,在跨包访问的时候需要public权限,当类是public的时候,类名和文件名必须一致。2.private:可以修饰成员变量和成员函数,只能在本类中使用。3.default:包级别(默认)访问权限,在不写权限修饰符,就是default权限,可以修饰类、成员变量和成员函数,在同一个包中可以自由访问,在不同包中访问就需要public权限。4.protected:(受保护权限)publicprotecteddefaultprivate25.Import+包名;导入包。26.访问权限与继承如果子类和父类不在同一个包当中,则子类无法继承到父类当中的default权限的成员变量和成员函数(有问题)。子类可以继承到父类当中的default权限的成员变量和成员函数,但是权限不够,无法使用。27.protected权限首先拥有和default权限一样的功能,但是该权限只能修饰成员变量和成员函数,除此之外,protected权限允许跨包的继承,【注意】和public不同,public允许包外的任意访问,但protected只允许子类访问父类protected的成员变量和成员函数。28.接口定义了接口就是定义了调用对象的标准。接口的基本语法(一):1.使用interface定义2.接口当中的方法都是抽象方法(抽象类,但不需要abstract定义类)3.接口当中的方法都是public权限。接口的基本语法(二):1.实现接口使用implements关键字2.一个类可以实现多个接口(对于类的继承来讲,一个类只可以继承一个父类,这里不同)3.一个接口可以继承多个接口29.简单静态工厂方法模式把生成对象的代码(用到newxxx();),封装在工厂类中。30.异常中断了正常指令流(一个程序从上到下依次的执行,一条条的语句构成指令流)的事件,异常只出现在程序运行的过程中(意味着在语法上是正确的,跟编译没多大关系)。异常是一个对象,当程序出现异常的时候,虚拟机会生成一个异常对象,生成异常的类都是由JDK提供的异常的分类:CheckException…uncheck异常运行时异常…check异常编译时异常父类…编译时报错虚拟机在运行时产生的错误,一旦产生错误虚拟机就会直接关闭,应用程序是运行在虚拟机上的…程序员对此无能为力,只能处理Exception31.try…catch…finally结构来处理可能出现异常的代码try{有可能出现异常的代码}catch(Exceptione){e.printStackTrace();}出现异常跳到catch打印异常finally{…}无论有没有异常都执行,也称为异常的出口,把清理资源的代码放在里面对于checkException必须对其进行处理,用try…catch或者声明,否则编译不能通过。对异常的处理关系到系统的健壮性。32.throw的作用throwe;作用:抛出一个异常对象,虚拟机得到这个异常对象后在此条语句后面终止代码的运行。如果抛出的是checkException的话,必须对其进行try…catch处理,但通常情况下,我们自己抛出的异常我们不会处理,这时编译就不会通过。处理异常还可以对其声明。33.throws的作用声明一个函数可能会产生异常:以年龄不能为负数为例,因为java虚拟机不会察觉到这种问题publicvoidsetAge(intage)throwsExceptions{//这样声明表明本函数可能产生异常,但本函数并没有责任在函数里处理异常,而是需要在调用此函数的地方在处理异常if(age0){Exceptione=newException(“年龄不能为负数”);//这里的参数就是异常信息throwe;}this.age=age;}34.I/O操作的目标从数据源当中读取数据,以及将数据写入到数据目的地当中,即对数据进行读写操作。数据的流向以java程序为参照物。I/O的分类:三种分法,(1)输入流与输出流(2)字节流与字符流(3)节点流与处理流[在节点流的基础上对数据进行加工]I/O当中的核心类(字节流的核心类)InputStreamOuputStream所有字节流的父类(抽象类)读写ThrowableExceptionErrorRuntimeException……FileInputStream最常用的FileOutputStreamInputStream:Intread(byte[]b,intoff,intlen);从硬盘上读取的数据放到字节型数组b中,off表示偏移量,即从数组b的第几个位置开始存储,len表示读取一次最多读多少数据。OutputStream:voidwrite(byte[]b,intoff,intlen)35.字节流的输入输出例子(小文件)//从文件中读取数据第一步骤1:导入类importjava.io.*;classIOft{publicstaticvoidmain(Stringargs[]){//2.在操作IO流的时候,会产生编译器异常,所以先捕捉异常,//用try..catch//3.声明输入流引用FileInputStreamfis=null;//a.声明输出流的引用FileOutputStreamfos=null;try{//4.生成代表输入流的对象fis=newFileInputStream(d:/Android_learn/src/from.txt);//b.生成代表输出流的对象fos=newFileOutputStream(d:/Android_learn/src/to.txt);//5.生成一个字节数组byte[]buffer=newbyte[100];//6.调用输入流对象的read方法//c.取read的返回值,调用write方法inttemp=fis.read(buffer,0,buffer.length);fos.write(buffer,0,temp);/*for(inti=0;ibuffer.length;i++){System.out.println(buffer[i]);}这里打印的是ascll码,下面是转换为字符的方法*/Strings=newString(buffer);s=s.trim();//调用一个String对象的trim方法将会去掉这个//字符串的首尾空格和空字符System.out.println(s);}catch(Exceptione){System.out.println(e);}}}36.大文件的读写方法(对上改进)字节流//从文件中读取数据第一步骤1:导入类importjava.io.*;classIOft{publicstaticvoidmain(St

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功