java笔记-做题点VI

java专项练习模糊点第六弹。
包括关键字、线程安全、内联函数、字符与字符串常量、ThreadLocal类、进制、Java中修饰符、数组的声明等。


1.true、false、null、friendly、sizeof都不是关键字;
goto、const是保留的关键字;
java的关键字全部都是小写的。

2.Java集合框架主要由Collection和Map两个根接口及其子接口、实现类组成。 collection 的子接口包括List,set,queue。而Map包括三个实现类HashMap,HashTable,LinkeHashMap。


2017-10-08

1.ResultSet中记录行的第一列索引为1。

2.静态变量只能在类主体中定义,不能在方法中定义。

3.以下片段:

1
2
3
4
5
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);

会在语句:b3=b1+b2编译出错。

因为被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了。而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。

4.java中的线程安全:

就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。

什么叫线程安全:

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。

线程安全问题都是由全局变量及静态变量引起的。

若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。


2017-10-10

1.内联函数:

内联函数就是在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来直接进行替换。
这样就不会产生转去转回的问题,但是由于在编译时将函数体中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大。
因此,函数代码小,频繁调用的函数适合采用内联函数。

2.字符与字符串常量

字符常量:一个字符常量表示为一个字符或一个转义序列(\b,\t,\n,\f,\r,\"【双引号符】,\'【单引号符】,\\【反斜杠符】等),被一对ASCII单引号关闭。
字符串常量:一对双引号关闭。


2017-10-11

1.能被java.exe成功运行的java class文件必须有main()方法,main()方法是入口;
能被Appletviewer成功运行的java class文件不是必须有main()方法,因为Appletviewer是运行applet的,applet不用main方法,继承applet类即可。

2.instance是java的二元运算符,用来判断他左边的对象是否为右面类(接口,抽象类,父类)的实例。

3.关于ThreadLocal类:

它的声明:public class ThreadLocal,由此可见,ThreadLocal并没有继承自Thread,也没有实现Runnable接口;
它继承Object,相当于没继承任何特殊的;
ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量。所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立,线程之间不共享;
由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,不会被其他线程访问,变量被彻底封闭在每个访问的线程中;
ThreadLocal中定义了一个哈希表用于为每个线程都提供一个变量的副本。


2017-10-13

1.进制(例如表示8):

十六进制:0x8
十进制:8
八进制:010
二进制:1000

2.在Java中修饰符总共有一下几种:

访问控制修饰符
分别有:public private protected,缺省

其它修饰符

分别有:abstract,final,static,native,synchronized,transient,volatile等

对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误 。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。

不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。

一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。

3.在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度。
如下,1,2,3可以通过编译,4,5不行。
(1)String a[]=new String[50];
(2)String b[];
(3)char c[];
(4)String d[50];
(5)char e[50];