java个人学习笔记02(注释+数据类型+算术逻辑运算)

1.多行注释不能嵌套多行注释,与c语言注释形式相同

2.数据类型:

基本数据类型:布尔型(boolean)1byte 只用最后1bit表示真假;字符型(char)2byte;数值型(byte(1byte), short(2byte), int(4byte), long(8byte), float(4byte), double(8byte))

引用数据类型:类(class),接口(interface),数组(array),统一为4byte,记录其引用对象的地址

注意:

整数默认int,小数默认double;long a = 1234567890l; float b = 2.1f;否则报错

byte b = 3;int型常量3自动转换为byte

b = b + 1;错误,b自动类型提升为int,结果为int 型变量不能转换为byte,因为变量的值是不确定的

b = (byte) (b + 1);正确,强制类型转换,由于变量值不确定,有可能丢失精度,慎用

3.算数逻辑运算

%:模运算(取余数),被模数%模数,其结果小于模数,可用于控制数据的范围。如果被模数小于模数,其结果为被模数

b = a ++;:tmp = a; a = a + 1; b = tmp;

+:连接符 "字符串"+.. System.out.println("1+1="+2+2) 输出:1+1=22  System.out.println("1+1="+(2+2)) 输出:1+1=4

+=:赋值运算符,short s = 4;s = s + 4;编译错误,丢失精度,但short s = 4; s += 4;编译通过,赋值运算符进行了类型自动转化

比较运算符:返回结果boolean类型:true or false

逻辑运算符:与&,或|,非!,异或^(相同为false,相异为true)

&:无论左边运算结果是什么,右边都参与运算

&&:当左边运算结果为false时,右边不参与运算

|:无论左边运算结果是什么,右边都参与运算

||:当左边运算结果是true时,右边不参与运算

位运算:<< 左移,>>右移(保证原符号位),加快2的次幂运算

                >>>无符号右移(空位均补0)操作二进制位,将二进制转化为八、十六进制

               &按位与:获取二进制中的1

                ^按位异或:一个数异或另一个数两次后为原值,可用于简单的加密解密

               ~按位取反:取反加1求负数补码

三元运算符:求三个数的最大值,max = ( a > b ? a : b ) > c ?  ( a > b ? a : b ) : c;

                        可以理解为if-else的简写格式,但不是所有的if-else都可以简化三元运算符,因为三元运算符必须有结果,而if-else可以没有,如输出到屏幕

/*
需求:将十进制转化为八进制
思路:1.通过按位与&和无符号右移>>>依次获取该数3位对应的二进制位
      2.直到该数的二进制位全为0
*/
import java.util.*;
class Convert{
	public static void main(String[] args){
		System.out.println("请输入一个整数:");
		Scanner input = new Scanner(System.in);//Scanner类
		int x = input.nextInt();//键盘输入一个整数
		int size=11;//int占4byte,化为八进制为11位
		int[] tmp = new int[size];
		int i;
		for(i=0;i<size;i++){
			tmp[i]=0;
		}//初始化数组
		i=0;
		while(x!=0 && i<size){
			tmp[i]=x&7;//去二进制x的末三位
			x = x >>> 3;//x无符号右移三位
			++i;
		}
		System.out.println("八进制:");
		for(i=size-1;i>=0;i--){
			System.out.print(tmp[i]);
		}//逆序输出,得到相应的八进制
	}
}

/*
需求:不用第三方变量交换两整型变量的值
思路1:利用第三方变量
思路2:求和,再分别作差
弊端:当两个数据较大时,可能超出int范围
思路3:利用a^b^b=a(a^b^b=b^a^b=b^b^a)
*/

class Exchange{
	public static void main(String[] args){
		int a = 1;
		int b = 2;

	/*	a = a + b;//a = 3
		b = a - b;//b = 1
		a = a - b;//a = 2
	*/
	    a = a^b;
		b = a^b;//b = a^b^b = 1 
		a = a^b;//a = a^b^1 = 2
		System.out.println("a="+a+"	b="+b);
	}
}











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值