【JavaSE笔记】Java常见细节性问题(一)
来源:互联网 发布:网络招聘怎么写 编辑:程序博客网 时间:2024/06/05 06:08
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:HelloWorlda1System.out.println('a'+1+"HelloWorld");//out:98HelloWorldSystem.out.println("5+5="+5+5); //out:5+5=55System.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相同,执行语句1ii. 不等,跟值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);}}
阅读全文
2 0
- 【JavaSE笔记】Java常见细节性问题(一)
- 【JavaSE笔记】Java常见细节性问题(二)
- 【JavaSE笔记】Java常见细节性问题(三)_二维数组
- 一些经常被忽略的细节性问题(一)
- 【JavaSE笔记】Java常用类及其方法(一)_Object
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(一)
- Java常见面试问题(一)
- JavaSE-smecking的学习笔记一()
- JAVASE学习笔记一
- JavaSE 02 Java基础语法(一)
- java中的自动装箱封箱的一些细节性的问题
- JAVASE学习笔记:第五章 JAVA面向对象(一)
- JavaSE-Headfirst Java笔记
- [JavaSE笔记]Java中易被忽视的一些问题
- JavaSE自学笔记整理(一)
- 【JavaSE笔记】集合(一)_Collection
- 【JavaSE笔记】IO(一)异常
- javaSE学习笔记之面向对象程序设计(一)
- Android的生命周期和启动模式
- 关于DNN(CNN)在图像分类中的一些学习资料
- 线段树简单实现
- How to set default values for IBInspectable in Objective-C?
- 关于Jsp中的几个域对象的学习总结
- 【JavaSE笔记】Java常见细节性问题(一)
- HTML笔记(HTML元素-表单)
- Python字符串相似度检测
- 使用Pytohn从MongoDB中提取文档相关链接学习
- 机器学习-----之KNN近邻算法(python3)
- 矩形覆盖
- Spring MVC怎么获取request的请求参数
- Unity之简易任务队列TaskQueue
- 解决:下载的项目链接到本地数据库