Byte b;b+=10与b =b+10的区别,自动提升和强制转换的区别。
1)自动类型提升
byte b = 5;
int x =6;
x = x + b;//b会自动提升为int类型进行运算
2)强制类型转换
byte b = 6;
b = b + 5;//报错
b = (byte)b+5;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b,注意可能损失精度
2、运算符回顾掌握
赋值运算符(=、+=、-=、*=、/=,、%=)
关系运算符(>、>=、<、<=、!=)
条件运算符(&&、||、!&、|、^)
位运算符(&、|、^、~、>>、<<、<<<、>>>)
l 需要注意的是:
&与&&(条件与、短路与)的区别:第一个操作数 为真时才判断第二个操作数。
|与||(条件或、短路或)的区别:第一个操作数为真时不再判断第二个操作数。
l 注意:按二级制进行操作、效率高。
>>、>>>后者是无符号右移、右移时符号位填充的都是0
y<x相当于乘以2的x次方
Y<x相当于除以2的x次方
^符号的作用(加密……、一个数异或一个数两次还是原来的数)。
l 三元运算符(?:)
格式
• (条件表达式)?表达式1:表达式2;
• 如果条件为true,运算后的结果是表达式1;
• 如果条件为false,运算后的结果是表达式2;
3、字符串和任何数据都是用+号相连,最终都会变为字符串
例:System.out.Print(5+5+”=”+5+5);
//转义字符\的应用(\n回车符 \b退格 \r回车键 \t制表符 )
4、对两个整数变量的值进行互换的方法。
通过第三方变量
Inttemp = n;
n = m;
m = temp;
异或方法(n = n^m ; m = n^m ; n = n^m)、
n = n ^ m;
m = n ^ m;//(n^m)^m;
n = n ^ m;//n ^ (n ^ m)
加减法(当int值大时容易溢出)
n = n + m;//如果n和m的值非常大,容易超出int范围。
m = n - m;
n = n - m;
最长用的还是通过第三方变量
5、进制转换
二进制(binary)、八进制( octonary)、十六进制(hexadecimal)
进制的由来.......
十进制转二进制、八进制、十六进制代码实现:
class TransDemo {
public static void main(String[] args) {
trans(60,2);//调用转换方法
}
static void trans(int a,int radix){
int temp = a;
char [] cha = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};//查表法,所以建一个数组存储所用到的字符
StringBuilder sb = new StringBuilder();//字符串容器
while(a>0){
sb.insert(0, cha[a%radix]);//循环过程中,在容器的0位置插入,容器长 度加一
a>>=(int)(Math.log(radix)/Math.log(2));//获取位移位数,二进制为1,八进制为3,十六进制为4
}
System.out.println(temp+"转换为"+radix+"进制为"+sb.toString());
}
}
6、java中的控制语句
判断语句、循环语句、选择语句
Ø 判断语句
If语句的三种格式:
If( 条件语句condition ){
代码块 statement//加上大括号用于执行多条语句
}
——————————
If( condition){
statement
}else{
statement
}
——————————
If( ){
}else if( ){
} else{
}
Ø 循环语句(for;while;do while)
For(初始化表达式;判断表达式;修改循环变量值){
statement
}
While(条件表达式){
循环代码块
}
Do{
循环代码块
}while(条件表达式)
² For(;;){//最简单的无限循环,条件默认为true
}
² do while 先执行一次再判断
² For与while的区别:基本可以通用,但是一点,for内定义的变量,出了代码块,内存就将其释放,节约内存。
Ø 选择语句(switch)
格式:switch(标签)//整数或枚举类型
{
Case 标签:statement;break;
Case 标签:statement;break;
Case 标签:statement;break;
Default :statement
}
² 注意:switch的执行顺序和有无break的区别,代码:
{
public static void main(String[] args)
{
show(0);//打印的是15
show(1);//打印的是14
}
public static void show(int i)
{
switch(i)
{
default:
i+=2;
case 1:
i+=1;
case 4:
i+=8;
case 2:
i+=4;
}
System.out.println("i="+i);
}
}
Ø break和continue
1)Break(中断控制流程语句):
用于跳出其所在的最内层的循环体;
带标签的可以跳出多重循环体,伪代码
abc :
For(...){
While( ...){
If( ...) break abc;
....
}
}
2)continue语句不跳出所在的循环体,而是中断执行当前循环的剩余部分,并进入下一轮循环。
求解:0~100之间偶数的和
代码如下
Public class SumDemo{
Int sum = 0;
For( int i = 0;i<= 100;i+=){
If(i%2!=0)
Continue;
Sum+=i;
}
System.out.println(sum);
}
7、数组
数组的初始化:
静态初始化:
第一种方式:int[] arr = {1,2,3,4,5}
第二种:int[] arr1 = new int[]{1,2,3,4,5}
动态初始化:
就是new出一个数组后,再用add方法添加
l 数组长度一经初始化不可改变。
l 数组的长度是属性arr.length//打印长度为5
l 二维数组
Int[][] arra = {{1,2,34},{5,67}{234,57}}
int[][] arr2 = new int[3][ 3]
理解为数组的数组,arr2中有3个一维数组元素,每个数组元素又有三个子元素。把他想做指针就容易理解了。
总结
代码练习不多,但是不能放松,对于java的概述、switch语句、理论性知识要牢记熟练掌握不足