《JAVA2实用教程第六版》笔记 | 您所在的位置:网站首页 › java实用教材第五版答案解析pdf › 《JAVA2实用教程第六版》笔记 |
前言:这些笔记只对笔者查缺补漏过程的知识进行记录,不对书上知识进行总结,仅仅供笔者学习、复习使用。 基础操作: 编译为字节码:javac -encoding utf-8 main.java ——>得到编码兼容中文的main.class 运行:java main (不能带文件后缀、不能用xxx/xxx/main) 反编译:javap main (相关操作帮助javap -help) 知识点: 一个源文件最多有一个public类,如果有,则源文件名与public类同名一个源文件无public类则源文件与任意文件同名即可主类:public static voidc main(String args[]) 所在的类即为主类小结:Java通过将源代码code.java文件编译为字节码文件code.class,然后通过jre在不同操作系统上得以运行,做到一次代码书写,任意系统运行。 第二章 基础数据类型基础操作: 数据输入: Scanner reader = new Scanner (System.in); int a = reader.next(); ...格式化输出: 与c语言同义的%d,%c,%f,%s以及占位md%(占m位),m.nf(共m位,保留n位小数)等等 知识点: 基础数据类型 类型所占字节 Byteint4byte1short2long8char 2float4double8 12.4默认为double类型,需要显式指定float 12.4F/f 或(float)12.4 第三章 运算符、表达式和语句知识点: instanceof 运算符可以返回一个布尔值,计算左面的对象是否是右面的类或子类对象 对byte进行数字运算过程中byte会被转为int,得到int结果,需要将结果转换为byte再赋值 第四章 类与对象知识点: 当调用方法对对象A内的某个对象成员变量B赋值时,赋予的是该传入对象C的引用,而不是拷贝对象,所以在赋值后调用A内方法对B进行改变时,C也随之改变。 可变参数:在方法形参声明public void f(int a,double ... b);表示有一个int参数,未知个数个double参数,取值采用b[0],b[1]...,通过.b.length()获取参数个数。 关联关系:A类内的成员变量有类B,则A关联于B类。 依赖关系:A类中方法形参列表或返回值内有含B类,则A类依赖于B类。 public于protect区别:protect修饰的方法和变量只能被同一包内的其他类对象访问。 不被public、protect、private修饰的成为友好对象,访问权限与protect一致,但友好变量/方法无法被继承,在java中protect被继承后仍然是protect属性。 在JDK10之后,增加自动变量类型 var,但需要在声明时就进行实例化(var a = 1)。 class A{ int n; } class B extend A{ int n; public ... say(){ ...printf(n); } } ... main(){ A a = new B(); a.n = 10; // 此时是给A的n变量赋值 ....printf(a.n); //输出 10 a.asy(); // 输出0 } jar文件 生成jar需要:所有的xxx.class文件 清单文件xxx.mf 清单文件xxx.mf内容 Mainfest-Version: 1.0 Class: 完整包名.类名 Created-By: 14 //注意所有冒号后需要有一个空格分隔开 使用以下指令生成jar文件 jar cfm xxx.jar xxx.mf 所有的class文件的相对路径 使用jar文件:在代码中加入: improt 包名.类名 编译.java时使用以下指令编译: javac -cp .;xxx.jar 需要编译的java文件如果jar文件不在同一文件夹则必须使用jar文件的绝对路径。 编译后运行使用: java -cp xxx.jar;包名.主类 第五章 子类与继承知识点: UML图 class People{ int age; void haha(){ } } class Student extends People{ int grade; void backHome(){} }对应的UML图 类依赖在第六章有样例图,此处不再重复。 对于继承protect类的子类D的访问权限:访问D本身的的只需要跟D在同一包内,访问继承的则需要与需要访问的方法或变量的祖先类在同一包内。 上转型对象:即使用父类引用指向子类对象,调用子类函数实现多态(跟c++虚函数差不多)。 抽象类,接口,普通类关系图: 知识点: 接口类中允许有常量和抽象方法。在JAVA8后允许给抽象方法定义默认函数体,需要在函数返回值声明前加上关键词default,同时也允许有static方法;JAVA9后允许有private方法用于给default方法调用。 默认接口所有方法为public权限。 实现接口时:抽象类可以实现任意多个,而非抽象类要求全部实现。实现时需要显式定义为public权限,否则相当于从public->友好,属于权限降级,不被允许。 接口UML图: 知识点: 可以使用private、protect修饰内部类,但内部类只供它的外嵌类使用,所以意义不大。内部类可以是static类型,static内部类无法操作外嵌类的实例成员变量。匿名类体中不能声明static成员和方法,也不能是抽象类,但可以是finally类。匿名类:可以通过如下方法继承一个类,并重写、创建、继承父类函数等等。也可以直接实现一个接口,得到这个匿名类的对象。 public class A{ A(100){}; public void say (){ //aaaCode; }; public void rap (){ //rapCode; }; } ------------------------------------------------------- ... main(){ A a = new A(100){ public void say(){ //bbbCode; } } a.rap(); //执行rapCode a.say(); //执行bbbCode } 当一个参数是接口函数时,可以用Lambda函数替代匿名对象 interface F{ public void say(); } class A{ void aSay(F f){ f.say(); } } ------------------------------------------------------ ... main(){ A a = new A(){ ()->{ Sys...printf("hello"); } } a.say(); //hello A aa = new A(){ ()->{ Sys...printf("aahello"); } } aa.say(); //aahello } 断言关键字 assert 可以在执行时遇到错误立即停止,而非抛出异常。 assert True; //程序继续执行 int a = 1; assert (a == 1); //程序继续执行 assert False; //程序停止执行 //如果使用下面这条断言,那么停止后还会抛出MyException异常 assert False:MyExeption 在try-catch-finally中,执行return后finally仍然会执行。在执行System.exit(0)后finally不执行。 使用throw抛出异常,使用throws在函数声明处声明可能产生的异常。 第八章 常用实用类知识点: 正则表达式: 符号意义.任意一个字符\.一个'.'字符\\D任意非数字\\d任意数字\\s任意非空格\\S任意空格\\w任意可标识符字符\\W任意不可作标识符字符\\p{Lower}小写字母a-z\\p{Upper}大写字母A-Z\\p{ASCII}ASCII码字符...... |
CopyRight 2018-2019 实验室设备网 版权所有 |