—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
/*
测试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培训、期待与您交流!——————————