计算机二级总结

  1. 类型转换问题
    float a =0.0//这是错误的!!
    因为0.0默认是double类型,自动转换不了成float!
    只有 float a = 0.0f;//这个才是正确的

  2. 窗体问题
    windowOpened是打开窗体后将要执行的方法。windowClosed是关闭窗体后将要执行的方法,windowClosing是在关闭窗体时要执行的方法,该方法可以执行窗体的关闭功能。windowDeactivated是窗体处于非激活时将会执行该方法。因此windowClosing是可以实现窗口关闭操作的方法。

  3. applet的问题
    首先是生命周期有四种:
    在Applet程序序中有如下几个方法与其生命周期相关:init()方法用来在加载Applet时完成初始化工作;start()方法用来启动Applet的执行;stop()用来停止Applet的执行,例如,用户离开Applet页面或浏览器;destory()用来完成撤消清理工作,准备卸载。因此在与Applet生命周期相关的方法的数量为四个。

  4. 多线程(较为具体的了解)
    ① 直接使用拿类继承Thread类重写其中的run方法,并且调用该类对象的start()方法来执行多线程。
    代码如下

    public class Test{
        public static void main(String []args){
            MyThread mt1 = new MyThread();
            MyThread mt2 = new MyThread();
            mt1.start();
            mt2.start();
        }
    }
    class MyThread extends Thread{
        public void run(){
            for(int i =0;i<1000;i++){
                System.out.println(i);
            }
        }
    }

    ②拿个类实现Runnable接口,这个接口里面只有一个run方法需要实现,来将它的对象作为Thread的构造函数的参数,这个使用了新类对象作为构造函数参数的Thread类的对象就具有了start()方法,直接调用便可。

    public class TestTwo{
        public static void main(String []args){
            MyThread mt = new MyThread();
            Thread t1 = new Thread(mt);
            Thread t2 = new Thread(mt);
            t1.start();
            t2.start();
            //需要注意的是Thread的构造函数要传同一个MyThread对象
        }
    }
    class MyThread implements Runnable{
        public void run(){
            for(int i=0;i<1000;i++){
                System.out.println(i);
            }
        }
    }

    注:设置编码为utf-8 运行:
    参数: -Dfile.encoding

    注意:”-Dfile.encoding=utf-8” 中是没有空格的,且最好遵循 java [-options] -jar jarfile [args…] 的顺序

    java -Dfile.encoding=utf-8 -jar Test.jar

    编译:
    参数: encoding

    javac -encoding utf-8 Test.java
  5. 极为见鬼的&&&
    &是当两边的表达式都会执行,来判断逻辑真假
    &&是先执行左边,左边为假,右边就不执行了,直接返回假。
  6. 坑爹的.length.length()
    眼熟是吧,.length是数组的属性,而.length()是字符串的方法!!
    s.toLowerCase();是将字符串变成小写!
  7. 关于Java中String 的一些方法
    String提供concat(),replace(),substring(),toLowerCase(),toUpperCase()等方法。

    public String concat(String str)//将当前字符串对象与指定str字符串相连;
    
    public String replace(char oldChar,char newChar)//用新字符替换老字符;
    
    public String substring(int beginIndex)//按指定的起始位置获得子字符串;
    
    public String substring(int beginIndex,int endIndex)//按指定范围去获得字符串中的子字符串;
    
    public String toLowerCase()//将字符串中所有字符变为小写;
    
    public String toUpperCase()//将字符串中所有字符变为大写。
  8. 访问修饰符!

    1public指明变量为公有。
    2、protected指明变量为保护访问。可被同一个包中其他类、不同包中该类的子类以及该类自己访问和引用。
    3、final指明变量为常量。
    4、默认(friendly)即无访问控制符,表示只能被同一个包中的类访问和引用。
  9. 超级巨坑,+号连接和==
    ①坑的+
    如果是+号前后有字符串,连接其他类型,都会将其它类型转换成字符串来连接

    String name ="one";
    System.out.println(name+2);//输出 one2

    是的,没错,不管+号后面还是前面是什么类型都会转换成字符串和前后的字符串连接!!
    但是,必须要有字符串类型!!否则报错
    ②坑==
    这玩意只能比较相同类型的!!不能比较不同类型的!!
    换句话说,==是比较两边是否是同一个对象

  10. 关于switch中的case,break
    如果switch中某个case没有break,则会出现这种情况

    public abstract class TestOne {
    
        public static void main(String[] args) {
            switch(4){
            case 1:
                System.out.println(1);
            case 2:
                System.out.println(2);
            case 3:
                System.out.println(3);
                break;
            case 4:
                System.out.println(4);
            case 5:
                System.out.println(5);
                break;
            }
    
        }
    
    }

    输出4 5

  11. 关于字符流和字节流的一些问题
    参考https://www.cnblogs.com/dongguacai/p/5658388.html
    在java.io包中提供了对压缩文件进行操作的能力。它是通过压缩文件输入流与压缩文件输出流来实现的,其分别继承自InflaterInputStream与DeflaterOutputStream。在创建压缩文件输入流时,其初始化参数是一个FileInputStream类的实例

  12. >>>>>
    >>:带符号右移。正数右移高位补0,负数右移高位补1。比如:

    4 >> 1,结果是2;-4 >> 1,结果是-2。-2 >> 1,结果是-1。

    >>>:无符号右移。无论是正数还是负数,高位通通补0。

    对于正数而言,>>>>>没区别。

    对于负数而言,-2 >>> 1,结果是2147483647(Integer.MAX_VALUE),-1 >>> 1,结果是2147483647(Integer.MAX_VALUE)。

    所以,要判断两个数符号是否相同时,可以这么干:

    return ((a >> 31) ^ (b >> 31)) == 0;

  13. 字符串比较的坑

    public abstract class TestOne {
    
    public static void main(String[] args) {
        String a = "abc";
        String b= "abc";
        String a1 = new String("abc");
        String b1 = new String("abc");
        System.out.println(a==b);//true,这是指向的常量池的
        System.out.println(a==a1);//false,a1,b1是指的新的对象地址
        System.out.println(a1==b1);//false
    
    }
    
    }

    上面代码主要分清楚使用String直接等于一个字符串和new出一个字符串的不同之处,可以看到这两种前者是在常量池中寻找,如果有这个字符串就直接将引用指向这个字符串。

  14. 数组的细节问题(如果数组int arry = new int[10])
    我想要取arry[1],请问值是什么?
    首先要清楚Java中对于整数数组如果没有指点数组的值会自动的用0填充整个数组。
    答案很明显了,再来看下面几种情况

    public class TestOne{ 
        public static void main(String[] args) {
            String []name = new String [10];
            System.out.println(name[1]);//null
            float []f = new float[10];
            System.out.println(f[1]);//0.0
            double [] d = new double[10];
            System.out.println(d[1]);//0.0
            int [] i = new int[10];
            System.out.println(i[1]);//0
            Student [] s = new Student[10];
            System.out.println(s[1]);//null
    }
    }
    class Student{
    
    }
  15. switch再提的小坑
    switch()括号里面的类型只能是short,byte,String,char,其它都不行。
    特别的注明:在计算机二级中因为使用的可能是较低版本的jdk,所以String也是不能在switch中的。
  16. 流中的坑
    InputStreamOutputStream以及ReaderWriter都是抽象类,不是接口!!
  17. 窗体类的分布图如下
    这里写图片描述
    上面,Component就代表组件,而继承它的子类是容器(Container),继承容器的就分为JComponentWindow
  18. 关于给窗体添加组件的问题
    在计算机二级中,似乎对直接在窗体中添加组件显得不屑,我们只能用面板(ContentPanel)来添加
    方式之一:

    frame.getContentPane().add(childComponent)

    用getContentPane()方法获得JFrame的内容面板,再对其加入组件,一般只使用该方式添加组件。
    向JFrame中添加组件的两种方式之二:
    把组件添加到Jpanel之类的中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板:

        Jpanel contentPane=new Jpanel( );

    把其它组件添加到Jpanel中;

    frame.setContentPane(contentPane);

    注意:用setContentPane()方法不允许设置窗体布局,其只显示最后添加的组件,且该组件将布满整个窗口,而不管原先组件的大小设置,相当于只允许添加一次组件作为JFrame的内容面板。所以一般不实用该方法进行添加组件(可能是我不知道吧)。

  19. 坑爹的~符号
    这货就是按位取反的,别想太多
  20. 关于静态内部类的详解
    请看我写的的另外一篇博客静态内部类详解

猜你喜欢

转载自blog.csdn.net/qq_26024867/article/details/82530850