黑马程序员--- 学习笔记(第二天)

 —————————— ASP.Net+Android+IOS开发.Net培训、期待与您交流!——————————


关键字:java对某些单词赋予了特殊含义


标识符:26个大小写英文字母,0-9 _ $  
定义规则:1.不能使用数字开头
2.不能使用java关键字


java严格区分大小写


定义如下:
1.包名:所有字母小写,不能以.开头或结尾 例如xx.yy.zz
2.变量名,函数名:首个单词小写,第二个开始首字母大写.例如xxYyZz
3.常量: 所有字母大写,多个单词用_ 连接 例如:X_Y_Z
4.类名,接口名: 所有首字母大写XxxYyy


常量:就是不能改变的数值


对于整数,java有四种表现形式:
1.二进制 0 1 满2进一
2.八进制 0-7 满8进一
3.十进制 0-9 满10进一
4.十六进制 0-9 A-F 满16进一


一个字节(byte) 由八位二进制数(bit)组成..  


二进制每3位代表一个数值,就是8进制
二进制每4位代表一个数值,就是16进制


十进制转二进制
原理:就是进行除以2的运算,结果从下往上读

可以用Integer.toBinaryString(val)  转成二进制 返回String 


二进制转十进制
原理:2进制数*2(n)过程
例如(6的二进制转十进制)
110  =   6 
0*2(0)+1*2(1)+1*2(2)=0+2+4=6


二进制转成16进制
例如0101 1010 四位一组(1 2 4 8规律): 结果是:0x5A

二进制转8进制
例如001011010 三位一组(1 2 4 规律)


负数的二进制
例如: -6
原理:就是6的二进制数取反+1
变量:
    就是将不确定的数据在内存开辟一个内存空间
    定义语法如下:
数据类型 变量名 = 初始化值;
注意:java强类型的语言,javascript是弱类型的语言


整数
byte 8位
short 16位
int 32位
long 64位
浮点类型:
单精度 float 32位
双精度 double 64位


Java中整数默认int 小数默认double


字符型: char  16位


布尔型 : true false


例子:

/*
测试1  变量的定义
*/
class  	 Demo1
{
	public static void main(String[] args) 
	{
		//数据类型 变量名  =  初始化值
			byte b=5;

			short s=5;

			int i=5;

			long l=5l;
		
			float f=5.5f;

			double d=5.21;

			boolean bool=true;

			char c='\n';

	}									 
}







什么时候定义变量?
当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作.



类型转换:
1.自动类型转换:小的向大提升
2.强制类型转换:大的向小的转换 

算术运算符
+ - * / % ++ -- 
整数/整数=整数


被模数小于模数,结果是被模数  例如:2%5=2
小考点: 1%-5=1         -1%5=-1;


i++ ++i的区别:
i++:先赋值在运算
++i:先运算在赋值



转义字符: 通过\来转变后面的字母或符号的含义
常用:
1. \n 换行
2.\b 退格
3.\r 按下回车键
4.\t 制表符(相当于tab)
赋值运算符:
= += -= \= *= %= 
比较运算符:
== > < >= <= != 
逻辑运算符:
& | ^ && || ! 


逻辑运算符用于连接boolean类型的表达式
&特点:
两边真,则真
两边假,则假
一边真,则假
|特点:
两边真,则真,
一边真,则真
两边假,则假
^特点:
两边真(假),则假
一边真,一边假,则真
!特点:
!真=假
!假=真

&&,||(短路) 同理

&和&&的特点:
&:两边都参与运算
&&:左边是假,右边不运算
|和||的特点:
|:两边都参与运算
||:左边为真,右边就不运算
位运算(二进制运算):
<< 左移
>> 右移
>>> 无符号右移
& 与
| 或
! 非
~ 反码


>> 其实就是除以2的位数次幂
<< 其实就是乘以2的移动位数次幂


>> << 拿最高位补


>>>  都拿0补


反码: 其实就是取反


异或小应用: 一个数异或同一个数两次等于本身

/*变量交换*/
class Demo3 
{
	public static void main(String[] args) 
	{
		int x=10,y=11;
		//第一种 	  无需第三方变量

		/*有局限性(x+y)不能超过int的取值范围
		System.out.println("交换前 x= "+x+",y= "+y);
		x=x+y;
		y=x-y;
		x=x-y;
		System.out.println("交换后 x= "+x+",y= "+y);
		*/

		//第二种    需要临时变量
		/*
		System.out.println("交换前 x= "+x+",y= "+y);
		int temp=x;
		x=y;
		y=temp;
		System.out.println("交换后 x= "+x+",y= "+y);
		*/
		//第三种 无需第三方变量
		
		System.out.println("交换前 x= "+x+",y= "+y);
		x=x^y;
		y=y^x;
		x=x^y;
		System.out.println("交换后 x= "+x+",y= "+y);
			

	}
}




注意:位运算高效率



练习:
 
/*
 位运算 
*/
class Demo2 
{
	public static void main(String[] args) 
	{
			//2进制转16进制

			 int n=60&15;	 //获取最低四位
			 if(n>9)
				   System.out.println((char)getChar(n));	
			 else 
					 System.out.println(n);	
					
			n=60>>>4;	//向右移动四位
			 if(n>9)
				   System.out.println((char)getChar(n));	
			 else 
					 System.out.println(n);	
	}
	/*根据接受的值返回*/
	public static int getChar(int n){

			 if(n==10)
				return 'a';
			else if(n==11)
				return 'b';
			else if(n==12)
				return 'c';
			else if(n==13)
				return 'd';
			else if(n==14)
				return 'e';
			else if(n==15)
				return 'f';

			return n;
	}
}





 三元运算符:
运算符一定有结果: 变量=(表达式)?真:假;

例子:


 /*
 三元例子
 */
class Demo5 
{
	public static void main(String[] args) 
	{
		int n=1;
		System.out.println(n>1?88:66);
		//意思是n>1吗? 大于返回88, 否则就是小于,返回66;

	}
}




好处:可以简化if else代码
弊端:因为是一个运算符,所以必须有结果


程序流程控制:
1.判断结构
if(条件表达式){执行语句;}




if(条件表达式1){
执行语句1;
}else{
执行语句2;
}
  
if(条件表达式1){
     执行语句1;
}else if(条件表达式2){
执行语句2;
}else{
执行语句3;
}
练习代码如下:

/*
使用if 跟switch完成练习
*/
class Demo4 
{
	public static void main(String[] args) 
	{
		//根据用户输入int判断星期几
		int d=0;
		if(d < 1 || d > 7)
			System.out.println("没有这个星期");
		else if(d==1){
			  System.out.println("星期一");
		}else if(d==2){
			  System.out.println("星期二");
		}else if(d==3){
			 System.out.println("星期三");
		}else if(d==4){
			 System.out.println("星期四");
		}else if(d==5){
			 System.out.println("星期五");
		}else if(d==6){
			 System.out.println("星期六");
		}else {
			 System.out.println("星期天");
		}

		//使用switch 根据输入月份判断季节
		switch(d){
			case 3:
			case 4:
			case 5:
				System.out.println("春季");
				break;
			case 6:
			case 7:
			case 8:
				System.out.println("夏季");
				break;
			case 9:
			case 10:
			case 11:
				System.out.println("秋季");
				break;
			case 12:
			case 1:
			case 2:
				System.out.println("冬季");
				break;
			default:
				System.out.println("你们那里有这个月份么?");
				break;
		}
	}
}



选择结构:
switch(表达式){
case 值1: 执行语句; break;
case 值2; 执行语句;break;
default: 执行语句; break;
}
switch特点:
1.被选择表达式只能接收byte short int char
2.case可以没有顺序,但执行时是有顺序的



开发选择哪个合适呢?
如果是对具体数值判断,具体值不多,如何byte short int char 首选switch,效率稍高
如果是布尔,区间,首选if

 —————————— ASP.Net+Android+IOS开发.Net培训、期待与您交流!——————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章