1、java 学习笔记Java 学习第一章1.java 特性,面向对象(不能在类的外面定义单独的数据和函数),可移植性,解释性,健壮性,多线程2.public static void 是 main()的权限修饰符,静态修饰符,返回值修饰符,java 中必须为此三值3. 整数型(byte8,short16 ,long64,int32)八进制以 0 开头,十六进制以0X 或 0x 开头数值型 浮点型 (float32,double64)基本数据类型 字符型 char16布尔型 true,false4.(int)X 其中 char X=d,其意思是将 d 的无符号编码的位置显示出5.转义字符以开头,在
2、printf 后接(n 换行,b 退格,r 回车, t 下一个制表符,ddd 八进制字符,dxxxx 四位十六进制字符)6.标识符,由任意顺序的字母,下划线,$和数字组成,且首位不能为数字7java 中生僻的关键字 this,finally,boolean,abstract,continue,throw,throws,new,interface,do,case,stricfp,package,super,try,catch,implements,final,volatile,synchronized,instanceof,protected,import,transient,dafaule8.
3、声明常量的标准格式 final 数据类型 变量名称=值;9.成员变量位于类体中,整个类中有效,分为静态变量(前面加上 static,有效范围可以跨类,可以用(类名.静态变量)来调用)和实例变量。局部变量位于类的方法体中,当前代码块中有效,即两个大括号间。10.局部变量可以和成员变量同名,此时成员变量被隐蔽11.运算符号 /除号 %求余 *乘号 +a 表示在使用前加一, a+表示使用后加一 / 若 case 中的常量值没有与表达式的值匹配,则执行 default,若无匹配且 default,则 awitch 不执行语句块 n+1;break;18.循环语句,while,do.while ,for
4、(初始化表达式;循环条件;循环后操作)foreach 语句for(元素变量 x:变量对象 obj)引用了 x 的 java 语句;java 学习第二章1.String 类属于 java.lang 包中,其内容处于双引号之内 ,可以用字符数组进行赋值,格式 String s=new String(char a ,int offset,int length) offset 表示开始截取的字符串位置,char 的首位号是 0.后两个因子可省略2.字符串连接使用+ 号,获取字符串的长度 str.length(); 字符串查找,str.indexOf(“String s“)字符串首次出现的位置, str
5、.LastindexOf(“String s“)最后出现的位置 , str 是字符串对象,s 是要查找的字符串,若未查找到,则都返回-1.获取指定位置的字符,格式 str.charArt(int index); index 为整型值。3.截取子字符串,格式 str.substring(int beginIndex,int endIndex);其中 endIndex 省略时是指到末尾。去除空格,格式 str.trim();字符串代替,格式 str.replace(char oldChar,char newChar);其代替是所有的字符判断字符串的开始与结尾,格式 str.startsWith(S
6、tring prefix);和 str.endsWith(String suffix);其值得形式是 boolean。判断字符串是否相等,格式 str.equals(String otherstr);考虑大小写和 str.equalsIgnoreCase(String otherstr);不考虑大小写。返回值都为 boolean 型。按字典顺序比较两个字符串,格式 pareTo(String otherstr);返回值:相等 0,str 位于 otherstr 之后为 1,反之-1.字符串大小写转换,格式 str.toLowerCase();和 str.toUpperCase();其中数字或非
7、字符不变。字符串分割,格式 str.split(String sign,int limit);sign 为分割符,如果定义多个分割法,可用|,例如“ ,|=”,limit 限制分割次数,可省略。格式化字符串,格式 str.format(Local l,String format,Object .args);其中 l 是格式化过程中用到的语言环境,=null 时不进行本地化,可省略。 format 格式化字符串,args 格式说明符引用的参数,可以为 0.4.时间格式话和日期格式化 Date date=New Date(); String s=String.format(“%te“,date);
8、其中%te 表示某一天。日期和时间格式化组合,%tF (年- 月-日),%tD(月/日/ 年)5.正则表达式,来检查某一字符串是否满足某一格式,例子 String regex=“w0,w0,.1w0,“;String str=““;if(str.matches(regex).6. 字符串生成器,格式 StringBuilder s=new StringBuilder(“内容“); 默认长度为十六个字符追加内容 s.append(content );其中 content 可以是 char,boolean,String ,double,int或者是另一个生成器插入内容 s.insert(int o
9、ffset ,arg);offset 插入的位置,arg 是插入的内容.移除内容 s.delect(int start,int end).7.一维数组声明,数组元素类型 数组名字;或数组元素类型 数组名字;分配内存空间,数组名字=new 数组元素类型数组元素个数 ;可等于 数组元素类型 数组名=new 数组元素类型数组元素个数;其中数组元素的个数改为数组元素时就是初始化8.二维数组声明,数组元素类型 数组名字;或数组元素类型 名字;分配内存空间,数组名字=new 数组元素类型数组元素个数 数组元素个数;可等于 type arrayname=value1,value2.9.填充替换数组元素,格式
10、 import java.util.Arrays;Arrays.fill(int a,int value);所有元素都用 value 替换成 Arrays.fill(int a, int fromIndex,int toIndex,int value);数组排序(从小到大)Arrays.sort(object);object 是要排序的数组名复制数组 Arrays.copyOf(arr,int newlength);其中 arr 是要进行复制的数组, newlength 是新数组的长度,不足补 0.或者 Arrays.copyOfRanger(arr,int fromIndex,int toI
11、ndex);数组查询 Arrays.binarySearch(str,objectkey);或 Arrays.binarySearch(str,int fromIndex,int toIndex,Objectkey)java 学习第三章(类和对象)1.类的实质是对象的属性和行为的载体,对象则是类抽象出来的一个实例,面向对象程序设计特点封装性,将对象的属性和方法封装起来的载体是类,且其对客户隐藏实现细节保护类的内部数据继承性,基于特定对象之间的共有属性,(父类,子类)多态性,同一操作作用于不同的类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。(抽象类,接口)2.j
12、ava 中,对象行为是方法的形式定义的,对象的属性是以成员变量的形式定义的,类包括对象的属性和方法定义成员方法的格式 权限修饰符返回值类型方法名(参数类型 参数名)./方法体return 返回值;3.java 中的修饰符(若无使用修饰符时,这个类预设为包存取范围)(类的权限设定会约束类的成员上的权限)访问包位置privateprotectedpublic本类可见可见可见同包其他类或子类不可见可见可见其他包不可见不可见可见4.局部变量位于成员方法内,在使用时必须进行赋值或初始化,方法执行结束后会被销毁关键字 this,被隐式地用于饮用对象的成员变量和方法(=对象.成员变量或对象. 成员方法),还
13、可以作为方法的返回值5.构造方法,是一个与类同名的方法,对象的创建就是通过构造方法完成的(特点,没有返回值,名称和本类的名字一样)格式 public 类名() ./.构造方法体6.被声明为 static 的变量,常量和方法被称为静态成员,可以在本类和其他类中调用(类名.静态类成员)静态方法中的规定,不可以使用 this 关键字和调用非静态方法,另外不能将方法体内的局部变量声明为 static7.主方法格式 public static void main(String args)/方法体 没有返回值8.对象的创建 Test test=new Test();第一个 Test 表示类名,第二个 Te
14、st 表示构造方法,test 为对象, new 创建对象(自动调用构造方法中的代码)访问对象的属性和行为对象的引用,格式(类名 对象引用名称;)引用只是存放一个对象的内存地址,并非对象。对象的比较(=比较的是两个对象引用的地址和 equal()比较的是对象引用所指的内容两种)对象的销毁,情况为对象引用超过其作用范围和对象的赋值为 null,但其垃圾回收你对 new 操作创建的另外可使用 finalize(),只是在使用前需要先在类中定义System.gc()强制启动垃圾回收器java 学习第四章(包装类+数字处理类)1.java 不能定义基本类型对象,为了能将其作为对象处理,并能连接相关的方法
15、,java 为每个基本类型提供了包装类。2.Integer,构造方法 Integer number=new Integer(int number);或 Integer number=new Integer(String str);常用方法,bytevalue()以 byte 型为返回值,intValue().,compareTo(),equal()比较两个值大小,只是返回值类型不同,toString()返回此值的 String 对象,vlaueOf(str)返回此值的integer 对象, parseInt(str)返回此字符创中的数字的等价整数值。toBinaryString(),toHex
16、String(),toOctalString(),返回 2.8.16 进制的字符串。常量,MAX_VALUE,MIN_VALUE,表示最大最小取值,SIZE 以 2 进制补码形式表示其比特位数,TYPE 表示基本类型 int 的 Class 实例3.Long,Short,Byte,Double,Float 和 Integer 类似4.Boolean 常量 TRUE,FALSE,SIZE,Character 常用方法,isUpperCase (ch)判断字符是否为大写,isLowerCase(ch ), 常量 CONNECTOR_PUNCTUATION.5.数字格式,import java.te
17、xt.DecimalFormat;导入包DecimalFormat s=new DecimalFormat(pattern);String output=s.format(value);或者 DecimalFormat s=new DecimalFormat();s.applyPattern(pattern);String output=s.format(value);pattern 的样式字符, 0(该位不存在则显示 0),#(存在显示,不存在不显示), %(百分号),u2030(千分号)s.setGroupingSize(大小) ;设置数字分组的大小6.数字运算(Math 类,且都被定义成
18、 static)调用方法 Math.数学方法 Math.PI,Math.E常用数学运算方法三角函数 Math.sin/cos/./atan(double a);Math.toRandians/toDegrees(double a)转成弧度/角度指数函数 Math.exp/log/log10/sqrt/cbrt(double a);Math.pow(double a,double b);取整函数 Math.ceil 大于等于 a 的最小整数/floor 小于等于 /rint 最接近 a 的整数(偶数优先)/round 加上 0.5 后小于等于的最大整数(double a)取最大值,最小值,绝对值
19、 Math.max(a,b);Math.min(a,b);Math.abs(a);7.随机数Math.random()(0.0213-1 ); BigInteger a=new BigInteger(“str“);其中的一些运算 bigInstance.add/substract/muliply/divide/remainder(取余)/pow/negate(取反)/shiftLeft/shiftRight/and/or/compareTo/equals/min/maximport java.math.BigDecimal(针对大小数);BigDecimal b=new BigDecimal(
20、double/String val);运算 add/subtract/multiply(BigDecimal c)/divide(BigDecimal d 除数,int e 商的小数点位数,int m 近似处理模式),模式有 BigDecimal。ROUND_UP/DOWN/CELLING/FLOOR/HALF_DOWN/HAVE_UP/HAVE_EVENjava 学习第五章(接口、继承、多态)1.类的继承 (java 中的关键字都为小写)Class Test /父类Public Test()/ SomeSentence /构造方法Protected void doSomething()/ S
21、omeSentence /成员方法Protected Test doIt() /返回值类型为 TestReturn new Test();class Test2 extends Test /继承父类public Test 2() /构造方法super(); /super()调用父类构造方法(不能调用父类为 private 的)super.doSomething(); /调用父类成员方法public void doSomethingnew()/ SomeSentence /新增方法public void doSomething()/ SomeSentence /重写父类方法(重写方法权限,只能从
22、小到大)protected Test2 doIt() /重写父类方法,返回值类型为 Test2return new Test2(); /返回值类型必须是父类返回值类型的子类在继承中还有一种特殊的重写方式,子类与父类的成员返回值,方法名称,参数类型及个数都一样,不同的是方法实现内容,成为重构在 java 中,当实例化子类对象时,编译器会在子类的构造方法中自动调用父类的无参构造方法,即父类对象也被实例化。(有参构造方法并不被自动调用,依赖于 super 关键字显示调用父类构造方法)final()对对像清理时,需要确保子类的 final()最后一个动作是调用父类的 final(),保证所有被清除2.
23、Object 类(所有的类都直接或间接继承了 java.lang.Object 类)Object 类主要包括 clone(),finalize(),equals(),toString()。另外 getClass(),notify(),notifyAll(),wait()不能被重写,原因是被定义为 final 型。getClass()是返回对象的类的名称,Class t3=t1.getClass();toString()讲一个对象返回为字符串形式,实际应用中通常重写 toString()方法 getClass().toString()联合3.对象类型的转型,向上转型,从一个具体的类到较抽象类之间
24、的转换(即子类对象直接调用父类中的方法)向下转型时相反,如果要将父类对象赋予子类对象,需要强制转化为子类型(Test p=(Test)q;其中 q 为 Test2)4.instanceof 判断对象的类型 格式 myobject instanceof ExampleClass(myobject 某类的对象引用,ExampleObject 为某个类,结果为 boolean 型)方法的重载(同一个类中,允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可,返回值的不同并不可以),若只有参数个数不同,可使用不定长方法语法,返回值方法名(参数数据类型.参数名)多态,使用父类类型的引用指
25、向子类的对象,该引用只能调用父类中定义的方法和变量,如果子类重写了父类中的一个方法,那么调用这个方法时将调用子类中的方法,变量不能被重写,重写只只对于方法5.抽象类(抽象类不可以实例化对象)格式 public abstract class Test() abstract void Test();/定义抽象类方法6.接口(是抽象类的延伸,为了使用 draw()而不耽误继承图形类)格式 public interface drawTest void draw();/接口内德方法省略 abstract一个类实现一个接口的语法,public class a extends b implements dr
26、awTest./7.java 中不允许多重继承,但是接口可实现多重继承格式 class 类名 implements 接口 1,接口 2,.,接口 njava 学习第六章(类的高级特性)1.包的使用可以有效的管理繁杂的文件,解决类的重名问题(同一个包中的类相互访问不需要制定包名)定义类的包名 格式 package 包名;(包得命名都必须为小写)导入类包 import 包名.*;/ 指定包中的所有类。 import 包名.类名;/指定包中的类。(子类需要单独导)改变编译后类文件产生的位置,在 DOS 下, javac -d./bin/./com/wsy/*.java导入静态成员 import st
27、atic 静态成员;2.final 变量一旦被设定后就不会改变其值(声明时需要赋值),final static 则在内存中开辟一段固定不变得空间。final 方法不能背覆盖,private 则无需再定义一个 final。final 类名 定义此类不可以继承和改动,此类中的所有方法被隐式的设置为 final,但成员变量可以被定义为 final 和非 final3.内部类成员内部类,在一个类的内部还有一个类,内部类可以随意使用外部类的成员方法和变量,即使被 private 修饰内部类的实例一定要绑定在外部类的实例上,如果从外部类初始化内部类对象,那么内部类就会绑在外部类上.内部类的成员只能在内部类
28、的范围使用,如果使用内部类对象,则可使用内部类成员。如果在内部类和非静态方法之外的实例化内部对象,则需要使用 外部类.内部类 的形式指定,例如 Outer o=new Outer(); Outer.Inner in=o.new.Inner() ;生成一个内部类对象。内部类可用 static、protected 和 private 修饰;而外部类只能使用 public 和 default;内部类中访问实例变量:this.属性或直接引用属性。若重名时,在内部类访问外部类的实例变量:外部类名.this. 属性。 【Outer.this.属性】4.在内存中所有对象被放置在堆中,方法和方法中的形参或者是
29、局部变量放在栈中5.局部内部类,在方法中定义的内部类。不能用 public、 protected 和 private 进行声明,其范围为定义它的代码块;可以访问局部变量(含参数),但局部变量必须被声明为 final6.匿名内部类,是一种特殊的局部内部类,它是通过匿名类实现接口。格式,return new A()./内部类体 ;编译后产生外部类名$序号 为名的 class 文件7.静态内部类,在内部类不需要访问外部类的非静态成员时,应该使用静态内部类,内部类声明为 static。特点,如果创建静态内部类的对象,不需要其外部类的对象。8.内部类和其他类一样可以被继承,只是复杂一些,需要设置专门的语
30、法。extends classA.classB某些类继承内部类时,必须给予这个类一个带参数的构造方法,并且构造方法的参数为需要继承的内部类的外部类引用,同时在构造体中使用 a.super()语句。java 学习第七章(异常处理)1.java 的异常捕获结构由 try,catch ,finally 组成,try /存放的是可能发生异常的 java 语句 ,发生异常时调用 catch 语句/程序块代码catch(Exceptiontype1 e) /用来激发被捕获的异常 执行完 catch,继续执行其后的语句,不影响整个程序的执行,Exceptiontype1 是 try 传给 catch 的变量类型,e 是变量名/ 对 Exceptiontype1 的处理 (getMessage()错误性质,toString()异常类型和性质,printStackTrace()类型,性质,栈层次,位置 )catch .finally /异常处理结束部分最后执行部分(不可少)