Java基础_02_Java编程基础

13 篇文章 0 订阅


_____Java编程基础_____


基本知识成列出来太多,所以这里只记录在学习编程基础时候遇到的部分知识总结。

进制

概述:

计算机中数据是以01的二进制形式表示的

正数的二进制:

1字节等于8位二进制

01010101---二进制(1位二进制位代表1位)
125--------八进制(3位二进制位代表1位)
55-------十六进制(4位二进制位代表1位)
所以进制转换以二进制为中介就显得特别简单


负数的二进制:

其实就是对应正数二进制取反再加1了

在32位Int类型中
6的二进制:00000000-00000000-00000000-00000110
取反-----:11111111-11111111-11111111-11111001
加1------:11111111-11111111-11111111-11111010

计算机判断是否为负数的标记就是首位是否为1,所以可以看到32位有符号Int类型的最大值为31个1的二进制,相对而言64位的处理器就能处理有符号Int类型的最大值就为63个1的二进制了。

总结:

由此可见byte(8位)short(16位)int(32位)long(64位)三个整数类型的最大和最小值了

对于float(32)和double(64)来说,最大值计算方式就不同了,详情参见http://blog.csdn.net/wenlei_zhouwl/article/details/7488760


逻辑运算符

&与:有false为false
|或:有true为true
^异或:相同为false
&&短路与:运算时首次遇到false就停止后面的运算
||短路或:运算时首次遇到true就停止后面的运算

位运算符

>>右移-------:转换成二进制向右移动,如3>>1就等于0011->0001等于1
<<左移-------:转换成二进制向左移动,如3<<1就等于0011->0110等于6
>>>无符号右移:值得注意的是负数的移动会导致符号位的1变成数值
&与运算------:6 & 3 -> 0110 & 0011 = 0010 = 2
|或运算------:6 | 3 -> 0110 | 0011 = 0111 = 7
^异或运算----:6 ^ 3 -> 0110 ^ 0011 = 0101 = 5
~反码--------:~6 -> ~(28个0)0110 = (28个1)1001 减1取反为(28个0)0111 = 7所以结果为-7

巧用位运算符:

1.乘除2的次方数可以左移或者右移动
如:3*2 = 6 ==>0011<<1 = 0110 = 6
如:4/4 = 1 ==>0100>>2 = 0001 = 1
2.不用参数交换值
n = n^m;此时n=n^m,m=m
m = n^m;此时n=n^m,m=n^m^m=n
n = n^m;此时n=n^m^n=m,m=n
3.进制转换,如60转换成8进制操作如下:
60 & 7(111) 得到60的最低3位

60>>3除去最低3位,继续循环上一步就可以将得到8进制了


循环switch

执行顺序:

case由上至下,没有满足条件再在执行default,只要触发了case或者default,都会执行当前位置以下可执行代码并且case和default无效

结束条件:

触碰到switch的结束花括号}或者break

所以下面这个例子
switch(x) {
	default:
		System.out.println("default");
	case 1:
		System.out.println("1");
	case 2:
		System.out.println("2");
		break;
	case 3:
		System.out.println("3");
		break;
}
结果为
default
1
2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值