您的位置:首页 > 编程语言 > Java开发

java基础整理01

2015-05-20 10:46 330 查看
一:进制间的转换

package study.base.day002;
/**
* 一个汉字是两个字节
* 一个字节是8位,一个汉字编码两个字节是十六位。
* 八进制就是二进制的三个代表一个位
* 16进制用 0x 开头表示
* @author Administrator
*/
public class Day2 {
public static void main(String[] args) {
System.out.println("60");
System.out.println(0x3c);
System.out.println(0x3f);
System.out.println(01011001);
/**
* 十进制转二进制:比如 6 的二进制
* 原理:对十进制数进行除 2 运算。
* 2|__6__		余数		0
* 	2|_3__		余数		1
* 	   1		不可整除了	1
* 结果从下到上排列
* 得到6的二进制数是 110
*
* 1	0	0	1	1	0	1	0	对应的值,若二进制位0,则没有
* 128	64	32	16	8	4	2	1
*/
//输入十进制,输出二进制
System.out.println(Integer.toBinaryString(6));

/**
* 二进制转十进制
* 如 110	-->从又到左换算
* 0乘于2的0次方	+	1乘于2的1次方	+	1乘于2的二次方
* 0*2(0)+1*2(1)+1*2(2)	=	0+2+4	=	6
*/

/**
* 二进制数相加减
* 	例如:
* 		101
* 	   +100
* 	  __________
* 	   1001
* 最后一位1+0得1
* 中间位数0+0得0
* 第一位数1+1得2,所以应该进1
* 所以第二位数应该变为0
*
*/

/**
* 十六进制
* 四个二进制位就是一个十六进制位
* 例如:
* 十进制:		90
* 二进制:		0101 - 1010
* 十六进制:   5	   A	10因为十六进制没有10的概念,所以应该改写为一个A
* 所以正确的写法为:0x5A	为90的十六进制数。
* 四个二进制数的最大值位15,所以用四个二进制数表示一个16进制数
*/
/**
* 同理的八进制
* 三个二进制数代表一位八进制数
* 例如:90
* 十进制		90
* 二进制		01 011 010前面少了一位,或补0显示
* 二进制	   001 011 010
* 八进制		1   3   2
*
*/

/**
* ------------------------------
* 负数的二进制表现形式
* 十进制		二进制
* 6			110
* -6:其实就是6的二进制取反+1。
* 取反:将二进制的1变成0,0变成1。
* 内存中6的表现形式:0000-0000 0000-0000 0000-0000 0000-0110
*    得-6的表现形式:1111-1111 1111-1111 1111-1111 1111-1001
* 然后再加二进制的1:0000-0000 0000-0000 0000-0000 0000-0001
* 				  =:1111-1111 1111-1111 1111-1111 1111-1010 = -6
*/
System.out.println(Integer.toBinaryString(-7));
//不通过第三方变量的方式来给两个整形的值互换。
int a = 9;
int b = 10;
a = a+b;
b = a-b;
a = a-b;
System.out.println("a:"+a+"//b:"+b);
}
}


二:基本数据类型,与运算。

package study.base.day002;
public class Day2017 {
public static void main(String[] args){
byte a = 2; //取值范围:-128~127
a = (byte)(a+2);
short s = 30000;
long l = 41;
//强制类型转换。
float fe = (float) 2.2;
float f = 2.2f;
double d = 2.234234;
char ch = '3';
char ch2 = '4';
char ch3 = 'a';
boolean bl = false;
System.out.println(('A'+0));
System.out.println('a'+1);
System.out.println(ch3);
System.out.println((char)5);
System.out.println((char)('b'+1));
}
}
package study.base.day002;
public class Day2020 {
public static void main(String[] args) {
/**
*	\转义符
* \n:换行
* \b:退格	相当于backspace
* \r:按下回车键
* \t:制表符	相当于tab键
*/
System.out.println("hhh::\bsss:");
System.out.println("\"hello\"");
}
}


输出结果:如图



三:赋值与比较运算符

package study.base.day002;
/**
* 赋值和比较运算符
* instanceof
*/
public class Day2021 {
public static void main(String[] args) {
//+=	-=	*=	/=	%=
int x = 5;
//x += x;	10
//x -= x;	0
//x *= x;	25
//x /= x;	1
//x %= x;	0
short s = 4;		//范围-32768~+32767
//s = (short) (s+5);	9		方法一得用强制类型转换。
s +=5;					//9		只做赋值运算,内部自动执行了强制转换。
System.out.println("x:"+s);
System.out.println("x:"+x);
int a,b,c;
a = b = c = 4;
System.out.println("x:"+b);
System.out.println(4!=4);
}
}


得到控制台输出结果:



四:逻辑运算符

package study.base.day002;
/**
* 逻辑运算符
*/
public class Day2022 {
public static void main(String[] args) {
int i = 9;
if(i>8 & 1<10){
System.out.println("xssss");
};
System.out.println("x:");
}
}


得到控制台输出结果:



五:位运算符

<pre name="code" class="java">/**
* 位运算符
* <<	左移	其实就是数乘于2的移动的位数次幂。
* >>	又移	就是数除以2的移动位数次幂。
* >>>	无符号右移
*/
/**
* 例如:3<<2
* 先显示3在二进制中的表现形式:0000-0000 0000-0000 0000-0000 0000-0011;
* 把二进制数向左移动两位,因此少了两位,然后再把最后面的数补上两位00;
* 得到的二进制数在内存中为:0000-0000 0000-0000 0000-0000 0000-1100;
* 再换算成十进制:12;
*
* 6>>2	=1
* 0000-0000 0000-0000 0000-0000 0000-0110
* 往右移动2位,然后在高位再加两个0
* 0000-0000 0000-0000 0000-0000 0000-0001
* 带符号右移		最高位为1的数都是负数
* 如-6:
* 1111-1111 1111-1111 1111-1111 1111-1010
* 当最高位为1时,则要自动补两个1,而不是自动补0
*
* 最高位补数法则:
* >>:最高位补什么由原有的数据的最高位而定。
* 		如果最高位是0,右移后,用0补空位。--》正数
* 		如果最高位是1,右移后,用1补空位。--》负数
* >>>:无论最高位是什么,右移后,都用0补充。
*/
package study.base.day002;
public class Day2024 {
public static void main(String[] args) {
/**
* 位运算福
* &:与	运算符
* &的例子:6&3	=2
* 把他们分别转换成二进制数,然后视0为假的,1为真
* 		110
* 	  &	011
* ——————————
* 		010
* 再转换成十进制:2
*
* |:或	运算符
* 例如:6|5	=7
* 		110
* 	  |	101
* ——————————
* 		111
* 再转换成十进制:7
*
*
* ^:异或	运算符
* 例如:6^5	=3
*
* 		110
* 	  ^	101
* ——————————
* 		011
* 再转换成十进制:3
*
* ~:反码	运算符
* -6的表现形式:-6的取反+1
* ~6的值为-7
* 计算6的反码:~6	=	-7		得出结论一个正整数的反码等于这个数的负数-1
* 			0000-0000 0000-0000 0000-0000 0000-0110
* ————————————————————————————————————————————————————————————
* 			1111-1111 1111-1111 1111-1111 1111-1001	= -7		+1 =-6
* 反码计算结束
*计算+1   +0000-0000 0000-0000 0000-0000 0000-0001
*		   =1111-1111 1111-1111 1111-1111 1111-1000		再次反码
* ————————————————————————————————————————————————————————————
* 		   =0000-0000 0000-0000 0000-0000 0000-0111		=7
* 计算7^4
*     111
*    ^100
*   ————————
*     011	3
* 	  ^100
* ——————————
* 	   111	7
* 一个数,异或同一个数两次,则等于他本身
*/
System.out.println( ~6 );
//控制台输出结果为:-7
}
}



六:三元表达式

<pre name="code" class="java">package study.base.day002;
/**
* 三元表达式
*/
public class Day2026 {
public static void main(String[] args) {
/**
* 计算60&15
* 方法:
* 0000-0000 0000-0000 0000-0000 0011-1100
* &
* 0000-0000 0000-0000 0000-0000 0000-1111
* ————————————————————————————————————————————
* 0000-0000 0000-0000 0000-0000 0000-1100	在转等于12
*
* 计算60右移4位
* 60>>4
* 60:0000-0000 0000-0000 0000-0000 0011-1100
* 右移动4位,则前面补4个0
* 	   0000-0000 0000-0000 0000-0000 0000 0011	=3
*/

int num = 60;
//获取60的最低4位,通过&15;
int n1 = num & 15;	//12
System.out.println((n1>9)?(n1-10+'A'):n1);
System.out.println(":"+(60&15));
//要获取下一组四位,将60右移四位,
int temp = 60>>>4;
//对temp的值进行最低四位的获取。
int n2 = temp & 15;
//0-9 'A' 'B' 'C' 'D' 'E'  字母对应的值
//ASCII    65  66  67  68  69
// 10  11  12  13  14
System.out.println(n2>9?(n2-10+'A'):n2);

/**
* 三元运算符:
* (条件表达式)?表达式1:表达式2
* 如果条件为true,则表达式1
* 如果条件为false,则表达式2
*/
int x,y;
x = 4;
y = (x>1)?'a':200;
System.out.println("y的值是:"+y);
}
}


输出控制台打印结果:



七:if学习

public class Day2027if {
public static void main(String[] args) {
int a=9,b;
b = (a>1)?100:200;
if(a>1){
b=100;
}else{
b=200;
}
System.out.println("打印B的结果:"+b);
int num =3;
if(num==1)
System.out.println("ssss");
else if(num==2)
System.out.println("xxx");
else
System.out.println("oooo");
//根据用于指定月份,打印该月份所属的季节
Scanner s = new Scanner(System.in);
System.out.print("请输入月份:");
int month = s.nextInt();
if(month>=1 && month<4){
System.out.println("春季");
}else if(month>=4 && month<7){
System.out.println("夏季");
}else if(month>=7 && month<10){
System.out.println("秋季");
}else if(month>=10 && month<13){
System.out.println("冬季");
}else{
System.out.println("输入月份有误,程序结束。");
}
}
}


输入正确结果的控制台信息:



输入错误结果的控制台信息:



八:switch学习

package study.base.day002;
import java.util.Scanner;
public class Day2028Switch {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int num;
System.out.println("请输入呗,1-4:");
num = s.nextInt();
switch(num){	//byte short int char
//case取值
//case 1:
//执行语句
//break;
//case 2:
//执行语句
//break;
//default:
//执行语句
//break;
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
case 4:
System.out.println("4");
break;
default:
System.out.println("数据有误");
break;
}
int a = 4,b=2;
char ch = '-';
switch(ch){
case '-':
System.out.println(a-b);
break;
case '+':
System.out.println(a+b);
break;
case '*':
System.out.println(a*b);
break;
case '/':
System.out.println(a/b);
break;
default:
System.out.println("数据有误");
break;
}
}
}


九:switch学习02

package study.base.day002;
import java.util.Scanner;
public class Day2029Switch2 {
public static void main(String[] args) {
//switch的季节练习
/**
* if 和 switch 语句很像,
* 具体什么场景下,应用哪个语句呢?
* 如果判断的具体数值不多,而是符合byte short int char String 这四种类型
* 建议使用switch语句,因为效率稍高
*
* 其它情况:对区间判断,对结果为 boolean 类型的判断,使用if
* 因为if的使用范围更广。
*/
Scanner s = new Scanner(System.in);
System.out.println("请输入一个月份:");
int inp =  s.nextInt();
switch(inp){
case 1:
case 2:
case 3:
System.out.println("春季");
break;
case 4:
case 5:
case 6:
System.out.println("夏季");
break;
default:
System.out.println("error");
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: