Java知识点整理1,变量传值(两个变量赋值,将一个变量给方法的参数赋值)A,值传递:基本类型之间是值的复制,传递基本数据类型参数值传递只是将(实参)参数复制一份(传递给形参)而已,函数进行操作的是另一个参数(形参),只是另一个参数(形参)的值和传递的参数(实参)值是相同的,另一个参数(形参)对方法值的改变不会影响到该参数(实参)的值。B,地址传递:引用类型之间的是地址的复制,将对象作为参数传递地址传递是直接把参数(实参)的地址传递给函数,这时函数是直接对原来的参数(形参)进行操作的,所以值会变化。方法中需要传递的参数成为形式参数,即形参,而对象或者基本类型称为实际参数。Eg:inta=10;Bookb=newBook(),为实际参数2,继承只能单继承在找错题中注意父类有无无参构造器。如果子类构造方法的参数和父类构造方法的参数相同,则意味着进行重写,重写需满足传递参数、方法的声明都相同。在方法重写时,如果需要调用父类的构造方法,则用super.方法()一个.java源文件定义一个类,类都使用public定义诸如结婚是否满足条件,可以在clasperson里面定义一个publicBooleanmarrywith(personp),诸如对年龄、收入等等进行区分,可以在setage中进行定义区别Eg:父类shape有子类circle和rect,shape里面可以没有成员变量,构造方法等,只需要有方法,诸如area等可以return0;然后在子类中重写,super.方法(),是继承父类3,多态性使用多态需要有继承关系,多态的使用可以提高方法参数的灵活性,父类型具有多态性,可以引用子类对象eg:Ftherf=newChildA();多态的灵活运用:publicstaticvoidmain(String[]args){Circlec1=newCircle(5,3,10);Rectr1=newRect(10,20);display(c1);display(r1);}publicstaticvoiddisplay(Shapes){//shape为父类//判断s的原本类型是否为Circleif(sinstanceofCircle){Circlec=(Circle)s;//强制转型c.f1();//调用Circle新增方法f1}System.out.println(面积:+s.area());//因为参数传入为s,方便用System.out.println(周长:+s.zhouchang());}4,Static关键字有static修饰的成员与类相关,没有static修饰的成员与对象相关(1)修饰属性a.通过类名.调用b.该类的所有对象共享该属性。c.属性是在类加载器加载该类时分配空间(2)修饰方法a.通过类名.调用b.该方法内只能使用有static修饰的属性或方法c.方法内不能使用this,super关键字(3)修饰代码块a.是在类加载时执行,因为虚拟机对类只加载一次,所以静态代码快只在第一次加载时执行。仅执行一次静态模块的灵活运用Static{}5,final关键字(1)修饰类类为最终类,不能被继承。(2)修饰方法方法为最终方法,在子类中不允许被重写(覆盖)。(3)修饰属性属性值在赋值后,不允许被修改.可以写于main方法外面定义属性时,如果加了final,必须显示给定初值,系统不能默认初始化。6,定义常量格式:publicstaticfinal类型常量名=值常量名注意全部大写写于main方法外面7,抽象类:abstract(1)抽象类概念a.抽象类只能作为父类使用,不能实例化。b.抽象类可以包含抽象方法,也可以不包含抽象方法。c.如果子类继承了抽象类,必须全部实现父类的抽象方法,d.否则子类得继续充当抽象类。(2)抽象方法a.在定义父类时,如果有些方法无法确定具体实现,可以定义成抽象方法。Eg:猫的爬树和熊的力量,不一定能全部实现b.抽象方法格式如下:修饰符abstract返回类型方法名(参数列表);抽象类构造方法必须存在于抽象类中!!8,interface(1)概念接口是一种特殊的抽象类,其中只有常量和抽象方法的定义。弥补了继承只能单继承的缺点。它是系统和外界交互的窗口。Eg:publicstaticfinalintA=0;publicvoidliliang();(2)接口定义格式publicinterface接口名extends接口1,接口2...{}注意:与类继承不同,接口允许多继承。(3)接口的使用publicclass类名implements接口1,接口2...{//必须实现接口中的所有方法//否则该类必须是抽象类}//多态使用接口类型变量=new接口实现类();9,模版设计模式:day7运用到abstracta.代码重复利用b.如果业务的主要处理逻辑相同,局部子类实现不同,可以将这部分相同逻辑提到模版类中,模版类采用抽象类定义。不同实现部分放到子类实现。10,单子模式day7为了保障一个类,只能创建出一个对象,不能存在多个对象。实现步骤:a.将构造方法私有,防止外界使用new+构造方法()创建对象b.提供一个静态返回当前类型对象的获取实例的方法.第一次调用该方法时,调用new构造器创建对象,后续调用该方法时,将第一次创建的对象返回11,eg:Stringid=sc.next();Stringid1=\\d{15}|\\d{18};if(id.matches(id1))//匹配用matchs{p.setId(id);//这里把信息输入放入一个数组中去,方便输出!}else{System.out.println(您输入格式有误,请重新输入!);return;//输入错误会直接结束,不会执行下一段}12,打乱排序:collections.shuffle(list);13,String(1)不可改变:String对象的内容是不能改变的.Stringstr=abc;//创建了一个对象,存储abc,然后将引用给str变量str=efg;//又创建一个对象,存储efg,然后将引用给str变量(2)字符串缓冲区用于字符串常量,缓冲区中的字符串对象可以共享Strings1=abc;//在缓冲区中创建存储abc的对象,然后将引用给s1Strings2=abc;//使用前面创建的存储abc的对象注意:newString(abc)创建出来的对象不使用缓冲区(3)常用的String方法charcharAt(intindex)//抓去intlength()//长度StringtoLowerCase()//小写StringtoUpperCase()//大写Stringtrim()//去除首位空格intcompareTo(StringanotherString)//从首字母开始比较,相同返回0intcompareToIgnoreCase(Stringstr)//不区分大小写booleanequals()//是否内容相等booleanequalsIgnoreCase()//不区分大小写,比较内容是否相等booleanstartsWith(Stringprefix)//以…为开头booleanendsWith(Stringsuffix)//以…为结尾intindexOf(intch)//首次出现ch的位置intlastIndexOf(intch)//最后出现ch的位置Stringreplace(charoldChar,charnewChar)//替换StringreplaceAll(Stringregex,Stringreplacement)//全部替换String[]split(Stringregex)//分割Stringsubstring(intbeginIndex)//从beginIndex至结尾的输出staticStringvalueOf(booleanb)//以String类型返回值14,StringBuffered和StringBuilder特性(1)都是可变字符序列,拥有相同的方法API(2)StringBuffer线程安全的//能够实现同步StringBuilder线程不安全,从1.5版本开始有//不一定能实现同步StringBuffer\StringBuilder方法StringBuilderappend(booleanb)//添加StringBuilderdelete(intstart,intend)大于等于start,小于end//删除StringBuilderinsert(intoffset,Stringstr)//插入StringBuilderreverse()//调换顺序记住:最后输出return的时候要转换成String形式,比如sb.tostring()StringBuffers=newStringBuffer();for(inti=0;i10;i++){s.append(i);}System.out.println(s.toString()+1);//单独打印s可以,但是要打印s+1必须转化为String否则报错StringBuffers=newStringBuffer(123456789);for(inti=1;is.length();i++){s=s.delete(i,i+1);//前闭后开}System.out.println(s);StringBuffers=newStringBuffer(123456);charss='a';charb='g';for(inti=1;i=s.length();i+=2){s=s.insert(i,ss);ss++;}System.out.println(s);System.out.println(-----------);System.out.println((char)(b+1));15,正则表达式:1.相关类Pattern:正则表达式的编译表示形式。Matcher:模式匹配器。2.正则表达式语法(1)字符x字符x\\反斜线字符\t制表符('\u0009')\n新行(换行)符('\u000A')\r回车符('\u000D')\b边界(2)字符类[abc]a、b或c(简单类)[^abc]任何字符,除了a、b或c(否定)[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围)(3)预定义字符类.任何字符(与行结束符可能匹配也可能不匹配)\d数字:[0-9]\D非数字:[^0-9]\s空白字符:[\t\n\x0B\f\r]\S非空白字符:[^\s]\w单词字符:[a-zA-Z_0-9]\W非单词字符:[^\w](4)数量词X?X,一次或一次也没有X*X,零次或多次X+X,一次或多次X{n}X,恰好n次X{n,}X,至少n次X{n,m}X,至少n次,但是不超过m次(5)运算符XYX后跟YX|YX或Y(X)X,作为捕获组Eg:Patternp=Pattern.compile([a-zA-Z_$][\\w$]*);Matcherm=p.matcher($A2_sff$)booleanb=m.matches();System.out.println(b);Stringstr=Javaj2eej2mejavaJ2eejavaj2se;Patternp=Pattern.compile(java,Pattern.CASE_INSENSITIVE);Matcherm=p.matcher(str);Strings=m.replaceAll(java.toUpperCase());//括号内内容,不能,System.out.println(s);或者直接:returnPattern.matches(张\\D{2},name);16,局部变量声明之后,java虚拟机就不会自动给它初始化为默认值。因此对于局部变量,必须先经过显示初始化,才能使用。如果编译器确认一个局部变量在使用之前可能没有初始化,编译器就报错。Eg:publicvoidmethod(){inta;a++;System.ou