Java认证之精辟总结

互联网大厂Java面试趣谈:从电商订单到微服务安全的技术探秘 大家好,今天带来一场互联网大厂的Java面试实录,不是枯燥的问答,而是充满趣味和生活化的技术探讨。面试官老李,一位严肃认真但又风趣的行业老兵,面对候选人李小梅的“水”式回答,展开了一轮又一轮的技术与业务场景交锋。😊。 阅读详情


  • 博客访问: 343529
  • 博文数量: 97
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 897
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-10 23:22
文章分类

全部博文(97)

文章存档

2011年(3)

2010年(6)

2009年(39)

2008年(39)

2007年(10)

我的朋友
    微信关注

    IT168企业级官微



    微信号:IT168qiye



    系统架构师大会



    微信号:SACC2013

    订阅
    热词专题
      Java认证之精辟总结  2007-04-16 22:09:11

    分类: Java

      声明:此文非原创,因给了我很大的学习帮助,故共享出来!若作者有异议请告之。

       注意:原文在此有一些改动!

       1。switch里面只能是short,int,char,byte的。

      2。if(a="a")编译错,if(a=false)编译ok,原因是a=false的a代表了个boolean值

      3。这种写法Outer。Inneri=new Outer()。newInner();OK!

      4。文件里,8默认是int,8.0默认是double

      5。八进制是0开头,不是O(英文o)

      6。byte-128~127,-128是二进制的多少?

      7。-1>>32还是-1,-1>>>32为什么还是-1?

      8。charc=´c´;Strings="s";s+=c;结果是sc!!!

      9。booleanb1=true;booleanb2=true;System.out.println(b1|b2);结果是true。编译没错!

      10。java的默认import包有哪些?

      类和对象(ClassandObject)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      0。最外层的类可以声明成final:"$filea":<final classa{}>ok!,但是不能是private和static的。

      1。overload是同类里同样的方法名,override是父子的继承

      2。override的返回结果必须一样,否则编译错哦  

      2。1override的modifier可以扩大,但是不能缩小。比如父类private void test(){}子类:public void test(){},没问题;如果反了,就死翘翘了!

      3。super。super(),靠,错的,没这么写的!

      4。static和非static之间永远无法override!

      5。看程序

      public classA{

      void test1()throws BaseEx{hi();}

      void hi(){System.out.println("say hi,a");}

      }

      class AA extends A{

      void hi(){System.out.println("say hi,aa");}

      }

      class test{

      static void main(Stringb[])throws Exception{

      Aa=new AA();

      a.test1();

      }

      }

      结果是,"say hi,aa",这说明什么?说明,方法永远跟着类的原来面目走;而,变量恰恰相反!

      6。一个非抽象方法死活也别想override成一个抽象方法

      7。override的子类的方法抛出的的异常只能是父类方法抛出异常的子异常类,或者无!

      8。构造器不能是native,final,static,synchronized的,可以是public,private,什么都没有的,呵呵

      9。构造器函数里还可以写return呢,但后面什么都不许有,甚至null(这不是废话吗,哈哈)

      10。构造器不能返回值。这大家都知道,但如果有个"构造器"反值了,别紧张,它就不是构造器喽,只是个普通函数

      11。super();this();这两个函数只能在构造函数里调用。

      12,成员变量声明时候赋值,比构造函数还早。int i=1;ealierthanTest(){}

      13。方法的参数变量可以是final。

      14。hashCode返回一个int

      15。voidwait()throws InterruptExceptionwait扔InterruptException异常

      16。java.lang.Void是void的包装类

      17。Byte,Interger,Double......所有的跟数有关的包装类都是继承于Number

      接口(Interface)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。接口的所有方法默认都是public,abstract和non-static的

      2。接口的所有变量默认都是public,static,final的。所以,接口的变量不能改值,在它的实现类里。

      3。接口的实现类实现的方法必须和接口的方法抛出同样的异常,不许是子类,这和override不一样!同样,如果接口方法没有抛,实现方法也不能抛。

      4。实现类实现的方法必须显式的声明成public,什么都不写都不行,啊!!!

      5。接口不能声明成final,要不它怎么被实现呢(这好像又是废话啊

      6。一个类实现两个接口,如果两个接口有相同的方法,实现类就实现这个方法,没问题的。

      内嵌类(InnerClass)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。内嵌类可以访问outer类的任何变量,包括私有的。

      2。静态inner类,只能访问outer类的任何static变量

      2。内嵌类可以是final,abstract的

      3。方法内的内嵌类不能为static:如:void test(){static classA{}}

      4。方法内的内嵌类也不能带任何modifier:如:void test(){public classA{}}

      5。方法内的内嵌类只能访问方法内的final变量,但是,可以访问outer类的任何变量。

      6。匿名类不能有构造器,但声明时候带参数,相当于构造器的参数传递。

      class ABC{}

      class ABCD{ private ABCD(int i){}}

       ABCtest3(){return new ABC(){};}

        ABCDtest4(){return new ABCD(3){};}

      interface iii{}

      iiitest5(){return new iii(){};}

      class BCD extends ABCD{} 编译会出错,因为BCD继承的是ABCD的不带参数类,而父类只有一个带参数的类,所以只有在父类中加一个不带参数的类就不会出错!

      看上面就知道,new iii(){};实际上匿名类实现了iii接口;new ABC(){};实际上是匿名类继承了ABC。

      8。继承

      class A{private A(){System.out.println("a!");}}

      class B extends A{}

      错!B实例的时候会主动调用父类A的构造,父类构造函数是private的,子类不能继承!!!

      9。内部类可以有synchronized方法,那么锁是这个内部类,跟外部类没一点关系,内外分别的,在锁的问题上。

      10。外部类不能通过this被访问,this这时候应该指的是内部类,享用外部类的成员就直接用,不用加任何限定词

      11。如何用this呢?请看:

      class Outer{int i;

       class Inner{

         class InnerInner{

           void Test(){

           Outer.this.i=1;

         }

        }

       }

      }

      看见了吧,类名。this。变量名,可以引用到i,第一次看到吧,嘿嘿,孤陋寡闻。

      线程Thread)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      去看Thread的API!!!!

      1。线程启动必须通过start函数。

      2。run函数不许也只能是public的。

      3。线程有优先级从1到10,通过Thread.setPriority(int);来改变,不能超过10,否则会出现运行异常

      4。线程优先级默认是5,即NORM_PRIORITY。NORM_PRIORITY是Thread的静态变量吗?

      5。Thread.yeild();是静态方法,所以,使用格式是Thread.yield();她强迫当前的进程放弃CUP。

      6。sleep(1000),是说线程睡觉1秒,然后,进入Ready状态,注意,不是运行状态,它还要等OS来调度来获得CUP。

      java.lang.*;

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。数组的克隆:int ia[][]={{1,2},null};int ib[][]=(int[][])ia.clone();

      2。什么是NaN?然后看ceil(NaN),floor(NaN),。。。

      3。Math.floor(-1.1f);//-2.0

      Math.ceil(-1.1f);//-1.0

      Math.round(-1.6d)//-2

      4。0=5。Math,Interger,Boolean。。。等类型包装类都是final的,不可继承

      6。int round(float);long round(double);唉,round永远返回不了小数点

      7。static double ceil(double)

      8。static double floor(double)注意,ceil,floor的只有这个double版本,什么都转成double!

      9。static double sin(double弧度);还有cos,tan

      10。new String;可以是byte[];char[];String;StringBuffer

      11。String的一些函数:int length();char charAt(int);String toUpperCase();String toLowerCase();

      12。String("Abc")。equals(String("abc"))不相等的,不然就不会有boolean equalsIgnoreCase(String)函数

      13。"012345678"是一个串的顺序号码,indexOf(´1´),indexOf("1")都返回1,subString(1,5)是2345,嘿嘿:是"[)"的感觉

      14,trim()连tab都退毛,"\t\njava",trim()一下就只剩下"java"了

      15。关于对象的克隆,去查查API......

       16。"abcd".trim(),"abcd"+newString("ef")都是合理的写法

      17。StringBuffer的3个构造器:()初始化容量为16,(int初始化容量),(String),初始化容量为串长加上16

      18。StringBuffer的一些函数:String toString();append();reverse();insert(); delete(intstart,intend);deleteCharAt(int);setLength(intnewLength);

      19。String s="";StringBuffer sb=newStringBuffer();if(s==sb){}编译错!因为,s,sb类型不一样,不能比较

      集合:

       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。各接口和类的关系,只有最后一个是类

      Collection:List:vector,ArrayList,LinkedList

      Map:SortedMap:TreeMap

      Collection:Set:SortedSet:TreeSet

      Map:HashTable

      Collection:Set:HashSet

      基础(Base)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。java application的main可以不是public的。但必须是static的

      2。一个文件只能有一个public类,而且还得跟文件名一样,包括大小写 

      3。变量只能是字母,$,_开头,接下来的第二个可以是,数字

      4。ch\u0061r=´a´;char\u0063=´b´;charc=´\u0063´;都是合法的

      5。1e-5d,合法。e-5d不合法,必须有前面的系数

      6。int[]i[]={null{1,2}}正确!int i[]={1,2,3,}正确!","和没有的效果一样

      7。局部array,跟变量一样,使用前要初始化

      8。main方法可以为final

      操作符和分配符(OperatorandAssignment)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。System.out.printl(1+2+"3");//33 

          System.out.printl("1"+2+3);//123

      2。int i=0;i=i++;i=i++;i=i++;结果,i=0!

      3。int i[];index=0;i[index]=index=5;结果是,i[0]=5;!!!

      4。byte b=10;可以,因为,10可以被自动从int转成byte

      5。接下来,byte b=b+10;不可以!!因为,10+b后的int无法被自动从int转成byte,问我,我也不知道为什么!靠!

      6。byte b1=4;byte b2=6;b1=b1+b2;错!编译错!b1+b2后,必须强制转成byte,b1x1+b2);

      7。XOR一样的为0,不一样为11,1=0;0,0=0;1,0/0,1=1

      8。x==Float。NaN编译错,应该是Float。IsNaN

      9。x==Double。POSITIVE_INFINITY编译可以

      10。-1是1111...1111,<<永远右补零,>>正补零,负补一,>>>恒补零

      10。1-1>>多少位都是-1;1<<31变成了最小负数,1000...0000

      11。最大正数是01111...1111

      12。最小负数是1000...0000(-2147483648)

      13。ainstanceof b,b必须是类/接口,不能是实例

      --------补充------------------------------

      1。byte,short,char都存在var=-var;编译错误,因为,这时候的-var已经自动转成个int类型了

      2。int/0会扔出ArithmeticException

      double,float/0得INF或者-INF

      0/0得NaN

      3。inta-b-c;是不符合命名规则的变量名编译会出错。

      4。chara=´\u0001´;对!charb=\u0001;编译错!

      5。boolean b1,b2,b3,b4,b5;

      b1=b2==b3;

      b1=b2<=b3&&b4==b5;

      b1=b2==b3==true

      都是对的!

      b1=b2==b3==b4XXXXXXX编译错!

      6。1>>1是0

      7。%=<<==>>=>>>都是合法符号

      8。--1-10*4这种写法没错,就是(--1)-10*4

      9。k=1;++k+k++++k;结果是7,相当于(++2)+(2++)+(+3)

      10。标号不能标示声明。

      hi:

      if{

      break hi;

      //breakhi1;不行,不能向后调转

      }

      //hi1:不行,不能放在声明前

      inti;

      hi1:

      i=1;

      11。public static void main(Strings[])throwsException{}可以噢,main可以扔出异常

      12。hi:

      if(b==true){break hi;}

      break标号,可以用在if里面。别的任何都不行,包括break,continue标号。

      13。int x=i*-j;**,没问题的!!!编译没错!int x=i*j++++i++;这个也没问题,

      变量修饰符(Modifier)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。最外面一层的类不能声明成protect和pravite的

      2。同一个类的两个实例之间可以访问彼此的私有方法和私有变量,酷

      3。protect和无修饰符的具体区别 关于外包可以访问被子类访问的是哪个?

      4。成员变量被修饰成final后,必须声明时候就赋初值或者在构造器里面赋初值,别指望她可以得到default值。

      5。抽象方法不能是static的!!!

      6。静态方法将随着类的变化而变化,看例子:

      class Parent{

      static void test(){System.out.println("hi,parent")};

      }

      class Childe xtends Parent{

      static void test(){System.out.println("hi,child")};

      }

      Parent p=new Child();

      p.test();//打出来的是hi,parent!

      7。静态方法可以通过类的实例调用。

      new Child().test();和Child.test();都OK!

      8。transient只能用在类的成员变量上,不能用在方法里。

      9。transient变量不能是final和static的

      10。native方法可以是private,abstractd的

      流程控制

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

      1。不可到达的语句声明为错:while(false){};for(;false{};if(false){}都无法编译

      2。for(第一部分;的第一部分可以用来声明或者赋值,但不能两者都

      3。byte b;switch{case200://200notinrangeofbyte,因为200超过b的范围,将编译错误

      4。带标签的continue回达到标签的位置,从新进入紧接在标签后面的循环

      5。带标签的break会中断当前循环,并转移到标签标示的的循环的末尾

      转型和上溯(ConvertingandCasting)

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      
      1。byte,char,short默认转成int

      2。byte->short->int->long->float->double  

      这是默认可以转型的方向,反了必须要显式cast!特别注意:long->float是默认的,别看long 64,float 32,

      还有就是看得出来,char和byte,short之间无法互相默认转换

      3。float f=1/3;OK!float f=1.0/3.0;编译出错,因为1.0/3.0结果是double的,噢噢~,错喽!!

      4。int i=1;byte b=i;错!需要显式cast。

      final i=1;byte b=i;就ok!我也不知道为什么,final就可以。而且,据我实验只有int和byte的关系这样,其他不行。

      5。int i[];Object []obj=i;错!Object obj=i;对!数组只能转成Object,而不能是Object[]

      6。int i[];Object []obj;i=(int[])obj;对!对象可以通过显式来转成一个数组。

      I/O操作

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      1。File类的一些重要方法:isFile();isDirectory();String[]list();exists();getAbsolutePath();getParent();

      2。通过delete();mkdir();rename(Filenewname);可以操纵文件,但是却改变不了文件的内容

      2。File类无法改变当前目录,除非重新创建一个File对象。

      3。InputStreamReader(InputStreamin,StringencodingName);

      OutputStreamReader(OutputStreamin,StringencodingName);

      Encoding:8859_1是Latin-1,包含ASCII

      4。关闭close一个流,就自动调用了flush。

      5。System.in,System.out,System.err,由JVM自动创建

      6。RandomAccessFile(Filefile,Stringmode);mode有,r,rw


    • 博客访问: 343529
    • 博文数量: 97
    • 博客积分: 4010
    • 博客等级: 上校
    • 技术积分: 897
    • 用 户 组: 普通用户
    • 注册时间: 2007-04-10 23:22
    文章分类

    全部博文(97)

    文章存档

    2011年(3)

    2010年(6)

    2009年(39)

    2008年(39)

    2007年(10)

    我的朋友
      微信关注

      IT168企业级官微



      微信号:IT168qiye



      系统架构师大会



      微信号:SACC2013

      订阅
      热词专题
        Java认证之精辟总结  2007-04-16 22:09:11

      分类: Java

        声明:此文非原创,因给了我很大的学习帮助,故共享出来!若作者有异议请告之。

         注意:原文在此有一些改动!

         1。switch里面只能是short,int,char,byte的。

        2。if(a="a")编译错,if(a=false)编译ok,原因是a=false的a代表了个boolean值

        3。这种写法Outer。Inneri=new Outer()。newInner();OK!

        4。文件里,8默认是int,8.0默认是double

        5。八进制是0开头,不是O(英文o)

        6。byte-128~127,-128是二进制的多少?

        7。-1>>32还是-1,-1>>>32为什么还是-1?

        8。charc=´c´;Strings="s";s+=c;结果是sc!!!

        9。booleanb1=true;booleanb2=true;System.out.println(b1|b2);结果是true。编译没错!

        10。java的默认import包有哪些?

        类和对象(ClassandObject)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        0。最外层的类可以声明成final:"$filea":<final classa{}>ok!,但是不能是private和static的。

        1。overload是同类里同样的方法名,override是父子的继承

        2。override的返回结果必须一样,否则编译错哦  

        2。1override的modifier可以扩大,但是不能缩小。比如父类private void test(){}子类:public void test(){},没问题;如果反了,就死翘翘了!

        3。super。super(),靠,错的,没这么写的!

        4。static和非static之间永远无法override!

        5。看程序

        public classA{

        void test1()throws BaseEx{hi();}

        void hi(){System.out.println("say hi,a");}

        }

        class AA extends A{

        void hi(){System.out.println("say hi,aa");}

        }

        class test{

        static void main(Stringb[])throws Exception{

        Aa=new AA();

        a.test1();

        }

        }

        结果是,"say hi,aa",这说明什么?说明,方法永远跟着类的原来面目走;而,变量恰恰相反!

        6。一个非抽象方法死活也别想override成一个抽象方法

        7。override的子类的方法抛出的的异常只能是父类方法抛出异常的子异常类,或者无!

        8。构造器不能是native,final,static,synchronized的,可以是public,private,什么都没有的,呵呵

        9。构造器函数里还可以写return呢,但后面什么都不许有,甚至null(这不是废话吗,哈哈)

        10。构造器不能返回值。这大家都知道,但如果有个"构造器"反值了,别紧张,它就不是构造器喽,只是个普通函数

        11。super();this();这两个函数只能在构造函数里调用。

        12,成员变量声明时候赋值,比构造函数还早。int i=1;ealierthanTest(){}

        13。方法的参数变量可以是final。

        14。hashCode返回一个int

        15。voidwait()throws InterruptExceptionwait扔InterruptException异常

        16。java.lang.Void是void的包装类

        17。Byte,Interger,Double......所有的跟数有关的包装类都是继承于Number

        接口(Interface)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。接口的所有方法默认都是public,abstract和non-static的

        2。接口的所有变量默认都是public,static,final的。所以,接口的变量不能改值,在它的实现类里。

        3。接口的实现类实现的方法必须和接口的方法抛出同样的异常,不许是子类,这和override不一样!同样,如果接口方法没有抛,实现方法也不能抛。

        4。实现类实现的方法必须显式的声明成public,什么都不写都不行,啊!!!

        5。接口不能声明成final,要不它怎么被实现呢(这好像又是废话啊

        6。一个类实现两个接口,如果两个接口有相同的方法,实现类就实现这个方法,没问题的。

        内嵌类(InnerClass)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。内嵌类可以访问outer类的任何变量,包括私有的。

        2。静态inner类,只能访问outer类的任何static变量

        2。内嵌类可以是final,abstract的

        3。方法内的内嵌类不能为static:如:void test(){static classA{}}

        4。方法内的内嵌类也不能带任何modifier:如:void test(){public classA{}}

        5。方法内的内嵌类只能访问方法内的final变量,但是,可以访问outer类的任何变量。

        6。匿名类不能有构造器,但声明时候带参数,相当于构造器的参数传递。

        class ABC{}

        class ABCD{ private ABCD(int i){}}

         ABCtest3(){return new ABC(){};}

          ABCDtest4(){return new ABCD(3){};}

        interface iii{}

        iiitest5(){return new iii(){};}

        class BCD extends ABCD{} 编译会出错,因为BCD继承的是ABCD的不带参数类,而父类只有一个带参数的类,所以只有在父类中加一个不带参数的类就不会出错!

        看上面就知道,new iii(){};实际上匿名类实现了iii接口;new ABC(){};实际上是匿名类继承了ABC。

        8。继承

        class A{private A(){System.out.println("a!");}}

        class B extends A{}

        错!B实例的时候会主动调用父类A的构造,父类构造函数是private的,子类不能继承!!!

        9。内部类可以有synchronized方法,那么锁是这个内部类,跟外部类没一点关系,内外分别的,在锁的问题上。

        10。外部类不能通过this被访问,this这时候应该指的是内部类,享用外部类的成员就直接用,不用加任何限定词

        11。如何用this呢?请看:

        class Outer{int i;

         class Inner{

           class InnerInner{

             void Test(){

             Outer.this.i=1;

           }

          }

         }

        }

        看见了吧,类名。this。变量名,可以引用到i,第一次看到吧,嘿嘿,孤陋寡闻。

        线程Thread)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        去看Thread的API!!!!

        1。线程启动必须通过start函数。

        2。run函数不许也只能是public的。

        3。线程有优先级从1到10,通过Thread.setPriority(int);来改变,不能超过10,否则会出现运行异常

        4。线程优先级默认是5,即NORM_PRIORITY。NORM_PRIORITY是Thread的静态变量吗?

        5。Thread.yeild();是静态方法,所以,使用格式是Thread.yield();她强迫当前的进程放弃CUP。

        6。sleep(1000),是说线程睡觉1秒,然后,进入Ready状态,注意,不是运行状态,它还要等OS来调度来获得CUP。

        java.lang.*;

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。数组的克隆:int ia[][]={{1,2},null};int ib[][]=(int[][])ia.clone();

        2。什么是NaN?然后看ceil(NaN),floor(NaN),。。。

        3。Math.floor(-1.1f);//-2.0

        Math.ceil(-1.1f);//-1.0

        Math.round(-1.6d)//-2

        4。0=5。Math,Interger,Boolean。。。等类型包装类都是final的,不可继承

        6。int round(float);long round(double);唉,round永远返回不了小数点

        7。static double ceil(double)

        8。static double floor(double)注意,ceil,floor的只有这个double版本,什么都转成double!

        9。static double sin(double弧度);还有cos,tan

        10。new String;可以是byte[];char[];String;StringBuffer

        11。String的一些函数:int length();char charAt(int);String toUpperCase();String toLowerCase();

        12。String("Abc")。equals(String("abc"))不相等的,不然就不会有boolean equalsIgnoreCase(String)函数

        13。"012345678"是一个串的顺序号码,indexOf(´1´),indexOf("1")都返回1,subString(1,5)是2345,嘿嘿:是"[)"的感觉

        14,trim()连tab都退毛,"\t\njava",trim()一下就只剩下"java"了

        15。关于对象的克隆,去查查API......

         16。"abcd".trim(),"abcd"+newString("ef")都是合理的写法

        17。StringBuffer的3个构造器:()初始化容量为16,(int初始化容量),(String),初始化容量为串长加上16

        18。StringBuffer的一些函数:String toString();append();reverse();insert(); delete(intstart,intend);deleteCharAt(int);setLength(intnewLength);

        19。String s="";StringBuffer sb=newStringBuffer();if(s==sb){}编译错!因为,s,sb类型不一样,不能比较

        集合:

         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。各接口和类的关系,只有最后一个是类

        Collection:List:vector,ArrayList,LinkedList

        Map:SortedMap:TreeMap

        Collection:Set:SortedSet:TreeSet

        Map:HashTable

        Collection:Set:HashSet

        基础(Base)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。java application的main可以不是public的。但必须是static的

        2。一个文件只能有一个public类,而且还得跟文件名一样,包括大小写 

        3。变量只能是字母,$,_开头,接下来的第二个可以是,数字

        4。ch\u0061r=´a´;char\u0063=´b´;charc=´\u0063´;都是合法的

        5。1e-5d,合法。e-5d不合法,必须有前面的系数

        6。int[]i[]={null{1,2}}正确!int i[]={1,2,3,}正确!","和没有的效果一样

        7。局部array,跟变量一样,使用前要初始化

        8。main方法可以为final

        操作符和分配符(OperatorandAssignment)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。System.out.printl(1+2+"3");//33 

            System.out.printl("1"+2+3);//123

        2。int i=0;i=i++;i=i++;i=i++;结果,i=0!

        3。int i[];index=0;i[index]=index=5;结果是,i[0]=5;!!!

        4。byte b=10;可以,因为,10可以被自动从int转成byte

        5。接下来,byte b=b+10;不可以!!因为,10+b后的int无法被自动从int转成byte,问我,我也不知道为什么!靠!

        6。byte b1=4;byte b2=6;b1=b1+b2;错!编译错!b1+b2后,必须强制转成byte,b1x1+b2);

        7。XOR一样的为0,不一样为11,1=0;0,0=0;1,0/0,1=1

        8。x==Float。NaN编译错,应该是Float。IsNaN

        9。x==Double。POSITIVE_INFINITY编译可以

        10。-1是1111...1111,<<永远右补零,>>正补零,负补一,>>>恒补零

        10。1-1>>多少位都是-1;1<<31变成了最小负数,1000...0000

        11。最大正数是01111...1111

        12。最小负数是1000...0000(-2147483648)

        13。ainstanceof b,b必须是类/接口,不能是实例

        --------补充------------------------------

        1。byte,short,char都存在var=-var;编译错误,因为,这时候的-var已经自动转成个int类型了

        2。int/0会扔出ArithmeticException

        double,float/0得INF或者-INF

        0/0得NaN

        3。inta-b-c;是不符合命名规则的变量名编译会出错。

        4。chara=´\u0001´;对!charb=\u0001;编译错!

        5。boolean b1,b2,b3,b4,b5;

        b1=b2==b3;

        b1=b2<=b3&&b4==b5;

        b1=b2==b3==true

        都是对的!

        b1=b2==b3==b4XXXXXXX编译错!

        6。1>>1是0

        7。%=<<==>>=>>>都是合法符号

        8。--1-10*4这种写法没错,就是(--1)-10*4

        9。k=1;++k+k++++k;结果是7,相当于(++2)+(2++)+(+3)

        10。标号不能标示声明。

        hi:

        if{

        break hi;

        //breakhi1;不行,不能向后调转

        }

        //hi1:不行,不能放在声明前

        inti;

        hi1:

        i=1;

        11。public static void main(Strings[])throwsException{}可以噢,main可以扔出异常

        12。hi:

        if(b==true){break hi;}

        break标号,可以用在if里面。别的任何都不行,包括break,continue标号。

        13。int x=i*-j;**,没问题的!!!编译没错!int x=i*j++++i++;这个也没问题,

        变量修饰符(Modifier)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。最外面一层的类不能声明成protect和pravite的

        2。同一个类的两个实例之间可以访问彼此的私有方法和私有变量,酷

        3。protect和无修饰符的具体区别 关于外包可以访问被子类访问的是哪个?

        4。成员变量被修饰成final后,必须声明时候就赋初值或者在构造器里面赋初值,别指望她可以得到default值。

        5。抽象方法不能是static的!!!

        6。静态方法将随着类的变化而变化,看例子:

        class Parent{

        static void test(){System.out.println("hi,parent")};

        }

        class Childe xtends Parent{

        static void test(){System.out.println("hi,child")};

        }

        Parent p=new Child();

        p.test();//打出来的是hi,parent!

        7。静态方法可以通过类的实例调用。

        new Child().test();和Child.test();都OK!

        8。transient只能用在类的成员变量上,不能用在方法里。

        9。transient变量不能是final和static的

        10。native方法可以是private,abstractd的

        流程控制

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

        1。不可到达的语句声明为错:while(false){};for(;false{};if(false){}都无法编译

        2。for(第一部分;的第一部分可以用来声明或者赋值,但不能两者都

        3。byte b;switch{case200://200notinrangeofbyte,因为200超过b的范围,将编译错误

        4。带标签的continue回达到标签的位置,从新进入紧接在标签后面的循环

        5。带标签的break会中断当前循环,并转移到标签标示的的循环的末尾

        转型和上溯(ConvertingandCasting)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        
        1。byte,char,short默认转成int

        2。byte->short->int->long->float->double  

        这是默认可以转型的方向,反了必须要显式cast!特别注意:long->float是默认的,别看long 64,float 32,

        还有就是看得出来,char和byte,short之间无法互相默认转换

        3。float f=1/3;OK!float f=1.0/3.0;编译出错,因为1.0/3.0结果是double的,噢噢~,错喽!!

        4。int i=1;byte b=i;错!需要显式cast。

        final i=1;byte b=i;就ok!我也不知道为什么,final就可以。而且,据我实验只有int和byte的关系这样,其他不行。

        5。int i[];Object []obj=i;错!Object obj=i;对!数组只能转成Object,而不能是Object[]

        6。int i[];Object []obj;i=(int[])obj;对!对象可以通过显式来转成一个数组。

        I/O操作

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        1。File类的一些重要方法:isFile();isDirectory();String[]list();exists();getAbsolutePath();getParent();

        2。通过delete();mkdir();rename(Filenewname);可以操纵文件,但是却改变不了文件的内容

        2。File类无法改变当前目录,除非重新创建一个File对象。

        3。InputStreamReader(InputStreamin,StringencodingName);

        OutputStreamReader(OutputStreamin,StringencodingName);

        Encoding:8859_1是Latin-1,包含ASCII

        4。关闭close一个流,就自动调用了flush。

        5。System.in,System.out,System.err,由JVM自动创建

        6。RandomAccessFile(Filefile,Stringmode);mode有,r,rw


      Java详细总结(精辟版++) 这是我学习Java时候做的笔记,应该比较全面,希望可以帮助到你。 立即下载

      相关推荐

      [Stanford CS217]CUDA中矩阵乘法GEMM优化的最关键点:向量内积和向量外积分别取行和取列

      对于矩阵C中的每一个tile,矩阵A与矩阵B中的tile只需要读取一次,这样就可以达到 O(N) 的计算强度。理想情况下性能应当受限于算术吞吐量,确切来说对于一个大型方阵,即 M=N=K ,矩阵乘法的数学操作复杂度为 O(N3) ,而数据量为 O(N2) ,同时计算强度为 N (这里的计算强度可以被理解为同一个数据被重复利用的次数)。GEMM就是指计算 C=A∗B+C ,其中 A 、B和C都是矩阵,A是 M×K 的矩阵,B是 K×N 的矩阵, C是 M×N 的矩阵。这就是向量内积和向量外积的最大区别。

      weixin_55035144的博客 1425

      Java认证鉴权框架:Sa-Token

      (调用角色校验和权限校验方法的时候,satoken会调用上面我们实现的StpInterface接口类的对应方法,拿到此用户的权限码集合后,再将权限码和待校验的字符串进行判断是否有权限)(调用角色校验和权限校验方法的时候,satoken会调用上面我们实现的StpInterface接口类的对应方法,拿到此用户的权限码集合后,再将权限码和待校验的字符串进行判断是否有权限)?SaRouter.match("/**").check(r -> System.out.println("----啦啦啦----"))

      love_eat_peach的博客 3178

      紫光同创FPGA中ADF网表文件的黑匣子封装与PDS环境实战指南

      本文详细介绍了在紫光同创FPGA开发环境中使用ADF网表文件进行黑匣子封装的实战指南。通过PDS环境配置、加密ADF生成、黑匣子集成及验证调试等步骤,帮助开发者实现核心IP保护,同时保持设计性能。特别适用于需要模块级代码保护的企业级FPGA开发场景。

      weixin_33725239的博客 341

      java认证授权(Spring Security)

      认证功能几乎是每个项目都要具备的功能,并且它与业务无关,市面上有很多认证框架,如:Apache Shiro、CAS、Spring Security等。由于本项目基于Spring Cloud技术构建,Spring Security是spring家族的一份子且和Spring Cloud集成的很好,所以本项目选用Spring Security作为认证服务的技术框架。Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是一个专注于为 Java 应用程序提供身份验证和授权的框架。

      Relievedz的博客 2695

      hcaptcha-challenger:基于本地AI模型自动破解验证码的工程实践

      验证码作为区分人类与机器的经典安全机制,其核心原理是通过图像识别、行为分析等交互式挑战来阻挡自动化程序。传统绕过方法依赖第三方打码平台或脚本,存在成本高、稳定性差的问题。随着多模态大语言模型和计算机视觉技术的发展,本地化AI求解成为新的技术方向,它通过集成YOLO、ResNet等模型,在本地完成图像语义理解,实现了高隐私、低成本、可进化的验证码自动化解决方案。这种范式尤其适用于需要大规模稳定处理网页交互的场景,如电商数据采集和社交媒体管理。hcaptcha-challenger项目正是这一理念的工程实践,它

      weixin_42587866的博客 1025

      从FinFET到GAA:手把手解读2nm芯片制造的关键技术(含BSPDN避坑指南)

      本文深入解读了2nm芯片制造从FinFET向全环绕栅极(GAA)晶体管架构演进的核心技术,并重点剖析了背面供电网络(BSPDN)的三种实现路径及其工程挑战。文章旨在帮助工程师理解技术变革的内在逻辑,并为应对2nm节点设计中的关键问题提供实用指南。

      weixin_29294975的博客 292

      java认证与证书

      目前主要有JKS和PEM两种编码格式文件。如何在这两种密钥库文件中进行库文件交换呢?可以通过格式的证书文件在两种格式的密钥库中进行库文件导出/导入等。通常使用编码格式作为数字证书文件存储格式。自签名证书,即证书申请者为自己的证书签名。数字证书的颁发流程简述过程如下:1、客户端请求服务器的流程如下:客户端请求服务器将按如下步骤进行:2、服务器端完成客户端请求处理后,需经过以下几个步骤完成响应:KeyTool是Java中的数字证书管理工具,用于数字证书的申请、导入、导出和撤销等证书管理操作。官方文档https:

      wbo 3645

      从BAM到bigWig:用UCSC工具链完成测序数据可视化的完整流程

      本文详细介绍了从BAM文件到bigWig格式的基因组数据可视化完整流程,涵盖UCSC工具链配置、文件格式转换、参数优化及常见问题解决方案。通过实战指南帮助研究人员高效完成测序数据可视化,特别适合ChIP-seq和RNA-seq数据分析。

      weixin_29309213的博客 707

      Java中的认证与授权机制

      使用Spring Security,可以有效地配置基于表单登录的认证、OAuth2授权以及OpenID Connect身份验证。无论是实现基础的认证机制,还是集成复杂的OAuth2和OpenID Connect协议,Spring Security都提供了丰富的支持,帮助开发者构建安全的应用程序。认证是验证用户身份的过程,而授权是确定用户是否有权限访问特定资源的过程。Spring Security是一个功能强大的安全框架,提供了认证和授权的全面支持。以下是一个简单的基于表单登录的认证配置示例。

      微赚淘客系统开发者博客 1440

      SRC漏洞挖掘实战指南:从零入门到月入过万的网络安全副业

      网络安全的核心在于识别和修复系统缺陷,其中逻辑漏洞与信息泄露是常见的安全风险。其原理在于应用程序在业务逻辑设计或数据处理过程中存在缺陷,导致未授权访问或敏感数据暴露。掌握这些技术对于构建安全的应用体系至关重要,不仅能有效防范攻击,也为安全研究人员提供了将技术能力变现的合法途径。在漏洞赏金(Bug Bounty)和SRC(安全应急响应中心)等应用场景中,白帽子通过系统化的测试方法,挖掘此类漏洞,既能获得经济回报,又能积累宝贵的实战经验。本文聚焦于逻辑漏洞与信息泄露的实战挖掘技巧,为初学者提供清晰的入门路径和效

      weixin_28568819的博客 347

      基于STC8G1K08A单片机的7位PWM输出程序(PCA功能实现呼吸灯效果)

      摘要:本文展示了基于STC8G单片机的PWM占空比控制实现。通过定时器0中断每5ms调整占空比(0-127范围),实现呼吸灯效果。关键代码包括:1)PWM初始化(7位PWM模式);2)定时器配置(1ms中断);3)主循环根据标志位动态调整占空比。硬件采用P5.4引脚输出PWM信号,通过direction标志实现占空比自动增减循环。该方案适用于LED亮度调节等场景,系统时钟24MHz,采用12T模式。

      weixin_74013772的博客 864

      java常见用户安全认证机制归纳

      默认的,当我们关闭浏览器的时候,cookie会被删除。在身份鉴定的实现中,传统方法是在服务端存储一个session,给客户端返回一个cookie,而使用JWT之后,当用户使用它的认证信息登陆系统之后,会返回给用户一个JWT,用户只需要本地保存该token(通常使用local storage,也可以使用cookie)即可。secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,在任何场景都不应该流露出去。

      qq_35757427的博客 1410

      3、固定翼无人机模型解析

      本文详细解析了固定翼无人机的动力学模型与纵向模型,涵盖位置、速度、角度及角速度的变化率方程,并介绍了力和力矩的计算方法以及气动系数的表达式。通过关键参数分析,探讨了速度、迎角和倾斜角对飞行性能的影响。文章还展示了模型在编队飞行和任务规划中的应用,并提出了参数优化与先进控制策略等优化思路,为无人机飞行控制系统设计提供了理论基础。

      gaochao的博客 240

      Java认证 SCJP 之精辟总结

      转载:javaunion.org Java认证之精屁总结 3.switch里面只能是short,int,char,byte的.4.if (a="a") 编译错, if(a=false)编译ok,原因是a=false的a代表了个boolean值 6.这种写法Outer.Inner i = new Outer().new Inner(); OK!7.文件里, 8 默认是int, 8.0默认是doubl

      清澈反省 1314

      假人有限元模型

      假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

      老版QQ原生表情gif动态

      这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

      java scjp考试_通过Java认证 SCJP 考试之精辟总结

      9.static double sin(double 弧度); 还有cos,tan10. new String; ?可以是byte[];char[];String;StringBuffer11. String的一些函数: int length(); char charAt(int); String toUpperCase(); String toLowerCase();12. String("Ab...

      weixin_42548708的博客 129

      NTscan扫描工具

      ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

      考试/基本概念

      Java认证之精辟总结  1.switch里面只能是short,int,char,byte的.   2.if (a="a") 编译错, if(a=false)编译ok,原因是a=false的a代表了个boolean值   3.这种写法Outer.Inner i = new Outer().new Inner(); OK!  4.文件里, 8 默认是int, 8.0默认是doub

      wishyouwerehere的专栏 707

      计算机控制技术及应用

      《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

      【精辟】读完这篇文章,带你全面掌握python!

      一般来说,Python可定义为面向对象语的脚本语言:这个定义把面向对象的支持和全面的面向脚本语言的角色融合在一起。标准库的支持:Python内置了很多预编译并可移植的功能模块,Python的第三方支持工具包括网站开发、数值计算、串口读写、游戏开发等各个方面。提高开发者的效率:相对于C、c++、Java等编译/静态类型语言,Python的开发者效率提高了数倍。以上的因素中,对于对大多数Python用户而言,前两项(质量和效率)也许是Python最具吸引力的两个优点。程序的可移植性:Python是可跨平台的。

      优快云_224022的博客 119

      学习java后端路线心得_Java编程技术大全:java详细学习路线及路线图

      针对本书,java学习可以大致分为3个阶段。初级阶段:学习Java基础语法和类的创建与使用,基础I/0 (输入/输出)操作、各种循环控制、运算符、数组的定义、方法定义格式、方法重载等,并熟练使用一种集成开发工具(如Eclipse等)。中级阶段:掌握面向对象的封装、继承和多态,学习常用对象和工具类,深入I/0操作,异常处理、抽象类与接口等。高级阶段:掌握Java的反射机制、GUI开发、并发多线程、J...

      weixin_35976688的博客 181

      JAVA电子书下载

      《Java2 面向对象程序设计》,洪维恩编写,中国铁道出版社优点:浅显易懂,代码少而精。有C、C++基础的可以1星期搞定。缺点:内容含盖量有限。虽然读懂全书可以说掌握了Java这门语言,但是只是基础之基础。《最新Java2 核心技术 卷1、卷2》机械工业出版社优点:内容含盖量广,包括了所有有关Java基础阶段的内容,讲解详细,有一定java基础的读者首选。另外本书每章后面都有API总结,是本书的一

      dwnljcg的专栏 1万+

      JAVA经典书籍排行

      学习JAVA的经典书籍,对新入门和JAVA的开发者都是不错的选择! 1. 《java编程思想》(Thinking in java)Bruce Eckel(著) 本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试

      mao906581468的专栏 1287

      java学习_Java编程技术大全:java详细学习路线及路线图

      针对本书,java学习可以大致分为3个阶段。初级阶段:学习Java基础语法和类的创建与使用,基础I/0 (输入/输出)操作、各种循环控制、运算符、数组的定义、方法定义格式、方法重载等,并熟练使用一种集成开发工具(如Eclipse等)。中级阶段:掌握面向对象的封装、继承和多态,学习常用对象和工具类,深入I/0操作,异常处理、抽象类与接口等。高级阶段:掌握Java的反射机制、GUI开发、并发多线程、J...

      weixin_39927848的博客 156
      上一篇: switch与ifelse的效率问题
      下一篇: Struts2 Action中文乱码问题的解决办法
      javaPie
      博客等级 码龄16年 1171粉丝 43原创
      评论
      成就一亿技术人!
      拼手气红包6.0元
      还能输入1000个字符
       
       条评论被折叠 查看
      添加红包

      请填写红包祝福语或标题

      个

      红包个数最小为10个

      元

      红包金额最低5元

      当前余额3.43元 前往充值 >
      需支付:10.00元
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付元
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值