计算机二级归纳
原创-
类型转换问题
float a =0.0//这是错误的!!
因为0.0默认是double类型,自动转换不了成float!
只有 float a = 0.0f;//这个才是正确的 -
窗体问题
windowOpened是打开窗体后将要执行的方法。windowClosed是关闭窗体后将要执行的方法,windowClosing是在关闭窗体时要执行的方法,该方法可以执行窗体的关闭功能。windowDeactivated是窗体处于非激活时将会执行该方法。因此windowClosing是可以实现窗口关闭操作的方法。 -
applet的问题
首先是生命周期有四种:
在Applet程序序中有如下几个方法与其生命周期相关:init()方法用来在加载Applet时完成初始化工作;start()方法用来启动Applet的执行;stop()用来停止Applet的执行,例如,用户离开Applet页面或浏览器;destory()用来完成撤消清理工作,准备卸载。因此在与Applet生命周期相关的方法的数量为四个。 -
多线程(较为具体的了解)
① 直接使用拿类继承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
编译:
参数: encodingjavac -encoding utf-8 Test.java
-
极为见鬼的
&
和&&
&
是当两边的表达式都会执行,来判断逻辑真假
&&
是先执行左边,左边为假,右边就不执行了,直接返回假。 -
坑爹的
.length
和.length()
眼熟是吧,.length
是数组的属性,而.length()
是字符串的方法!!
s.toLowerCase();是将字符串变成小写! -
关于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()//将字符串中所有字符变为大写。
-
访问修饰符!
1、public指明变量为公有。 2、protected指明变量为保护访问。可被同一个包中其他类、不同包中该类的子类以及该类自己访问和引用。 3、final指明变量为常量。 4、默认(friendly)即无访问控制符,表示只能被同一个包中的类访问和引用。
-
超级巨坑,
+
号连接和==
①坑的+
号
如果是+
号前后有字符串,连接其他类型,都会将其它类型转换成字符串来连接String name ="one"; System.out.println(name+2);//输出 one2
是的,没错,不管
+
号后面还是前面是什么类型都会转换成字符串和前后的字符串连接!!
但是,必须要有字符串类型!!否则报错
②坑==
这玩意只能比较相同类型的!!不能比较不同类型的!!
换句话说,==
是比较两边是否是同一个对象 -
关于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
-
关于字符流和字节流的一些问题
参考 https://www.cnblogs.com/dongguacai/p/5658388.html
在java.io包中提供了对压缩文件进行操作的能力。它是通过压缩文件输入流与压缩文件输出流来实现的,其分别继承自InflaterInputStream与DeflaterOutputStream。在创建压缩文件输入流时,其初始化参数是一个FileInputStream类的实例 -
>>>
和>>
>>
:带符号右移。正数右移高位补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;
-
字符串比较的坑
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出一个字符串的不同之处,可以看到这两种前者是在常量池中寻找,如果有这个字符串就直接将引用指向这个字符串。
-
数组的细节问题(如果数组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{ }
-
switch再提的小坑
switch()括号里面的类型只能是short,byte,String,char,其它都不行。
特别的注明:在计算机二级中因为使用的可能是较低版本的jdk,所以String也是不能在switch中的。 -
流中的坑
InputStream
和OutputStream
以及Reader
和Writer
都是抽象类,不是接口!! -
窗体类的分布图如下
上面,Component就代表组件,而继承它的子类是容器(Container),继承容器的就分为JComponent
和Window
-
关于给窗体添加组件的问题
在计算机二级中,似乎对直接在窗体中添加组件显得不屑,我们只能用面板(ContentPanel)来添加
方式之一:frame.getContentPane().add(childComponent)
用getContentPane()方法获得JFrame的内容面板,再对其加入组件,一般只使用该方式添加组件。
向JFrame中添加组件的两种方式之二:
把组件添加到Jpanel之类的中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板:Jpanel contentPane=new Jpanel( );
把其它组件添加到Jpanel中;
frame.setContentPane(contentPane);
注意:用setContentPane()方法不允许设置窗体布局,其只显示最后添加的组件,且该组件将布满整个窗口,而不管原先组件的大小设置,相当于只允许添加一次组件作为JFrame的内容面板。所以一般不实用该方法进行添加组件(可能是我不知道吧)。
-
坑爹的
~
符号
这货就是按位取反的,别想太多 -
关于静态内部类的详解
请看我写的的另外一篇博客 静态内部类详解
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除