1. JVM不是跨平台的,Java语言是跨平台的。

2. 赋值运算符:

a. short s = 1; s = s + 1;

b. short s = 1; s += 1;

上面两个代码有没有问题?如果有,哪里有问题?

a:有问题,隐含了一个默认类型转换,类型不匹配,等号右边最终是 int 型,而等号左边属于 short类型

b:没有问题,+= 扩展的赋值运算符隐藏了强制类型转换。

3. 字符串+任何数据最终的得到的结果都是字符串(+:拼接符号)

public class Demo{
		public static void main(String[] args){
			System.out.println("HelloWorld"+'a'+1);//out:HelloWorlda1
			System.out.println('a'+1+"HelloWorld");//out:98HelloWorld
			System.out.println("5+5="+5+5);             //out:5+5=55
			System.out.println(5+5+"=5+5");             //out:10=5+5
		}
	}

4. byte b = 130 ;?

有问题吗?如果想赋值正确,那么应该怎么做?结果是?

错误 要强制类型转换:

byte b = (byte) 130 ; //130 默认类型是int; 
 System.out.println(b);//out:-126 
 130(D)=0000 0000 0000 0000 0000 0000 1000 0010 (B) (原码) 
 强制类型转换后: 1000 0010(B) 
 1 000 0010 (补) 
 再取补码 1 111 1110 (原)=- (64+32+16+8+4+2)=-126

5.类型转换 

byte b1 = 3, b2 = 4 ,b ;
 b = b1 + b2 ; 
 b = 3 + 4 ;

哪句是编译失败的呢?为什么?

b = b1 + b2 是错误的;它隐藏了一个默认转换:

b1 b2都是byte类型(byte short char 之间不转换u一旦参与运行先转换类型int 类型),得到的结过默认转换int类型4个字节的,而用一个byte类型去接受,肯定报错(要解决就必须强制类型转换)

变量相加:先看数据类型,看是否有默认类型转换,有的话,就必须强制类型转化

变量相加:先相加,然后得到结果看其是否在 类型范围内 (byte (-128~127)),在的话就不会报错


6. 逻辑单与& 逻辑双与&&的区别?

a. 逻辑双与&&:具有短路效果:左边为假,则右边不执行。

b. 逻辑双或 || :具有短路效果:左边为真,则右边不执行。


7. 请实现两个数据交换(一般默认int类型)

int a =10 ; int b = 20 ;

a. 方法一:采用中间变量的方法(简单的)

int 
c = a; 
a = b; 
b = c;


b. 方法二:采用用位异或的特点去实现(重点)(位异或的特点:相同为0,不同为1)

a = a ^ b ; 
b = a ^ b ; //b = a ^ b ^ b 
a = a ^ b ; // a = a ^ b ^ a

c. 方法三:采用变量相加的方式
a = a + b ; 
b = a - b ; 
a = a - b ;

8. if语句的注意事项:

a. 如果if语句里面只有一条语句,if(表达式) 后面的大括号可以省略,但是建议不要省略

b. if 语句的表达式不管是简单的还是复杂的,最终是 boolean 类型

c. 在if语句里面,有分号的地方不能有 { ,有 { 的地方不能有分号

9. switch 语句相关注意事项;

a. 格式:
switch(表达式){
					case 值1:
						语句1;
						break;
					case 值2:
						语句2;
						break;
					……
					default:
						语句n+1;
						break;
}

b. 执行流程:

i. 用switch 后面的表达式的值和case 后面的值进行比较,如果值和1相同,执行语句1

ii. 不等,跟值2 比较,成立执行语句2 遇见break,结束

iii. 如果上述都没有相同的值,执行default中的语句

c. 问题:
i. switch语句后面可以跟byte类型吗?

switch语句后面可以跟long类型吗?

switch语句后面可以跟String类型吗?

解:本身能跟是类型:int,byte,short,char,枚举类型(JDK 5.0以后),String类型(JDK7以后)

ii. switch语句的结束条件是什么?

1) 遇见break结束

2) 程序默认执行到末尾

iii. 其他:

1) case 后面的值只能是常量,不能是变量(JavaScript 脚本语言中switch语句的case可以跟常量,变量,表达式)

2) dafault 里面的break可以省略,但是不建议省略

iv. 注意事项:

1) default在末尾中的break可以省略

2) default可以在该switch语句中的任意位置

3) case后面只能跟常量,不能跟变量

4) 在switch语句中,若中间没有break,会造成一个现象: case穿透

d. 例子:
public class SwitchTest {
				public static void main(String[] args) {
					//版本1:
					int x = 2;
					int y = 3;
					switch(x){//x的值放入switch中
						default:
							y++;
							break;//1)语句break结束
						case 3:
							y++;
						case 4:
							y++;
					}
					System.out.println("y="+y);
					System.out.println("++++++++++");
					
					//版本2:
					int a = 2;
					int b = 3;
					switch(a){
						default:
							b++; //2)程序默认执行到末尾
						case 3:
							b++;
						case 4:
							b++;
					}
					System.out.println("b="+b);
				}
}