Java语言基础
比较运算符和逻辑运算符
※&& 和&的区别:首个判别式为假,则后边的判别式不进行判断,结果为false。
※|| 和|的区别:首个判别式为真,则后边的判别式不进行判断,结果为true。
一个数异或同一个数两次,结果还是这个数。
class OperateDemo3
{
public static void main(String[] args)
{
/*
比较运算符,运算结果必须为true或false
*/
//System.out.println(3>2);//true
//System.out.println(3==2);//false
/*
逻辑运算符的作用:
用于连接两个boolean类型的表达式
& 与
运算特点:
true&true=true;
true&false=false;
false&ture=false;
false&false=false;
| 或
运算特点:
true|true=true;
true|false=true;
false|true=true;
false|false=false;
^ 异或
运算特点:
true^true=false;
true^false=true;
false^true=true;
false^false=false;
! 非运算:判断事物的另一面
!true=false;
!false=true;
&&
和&的区别:首个判别式为假,则后边的判别式不进行判断,结果为false
||
和|的区别:首个判别式为真,则后边的判别式不进行判断,结果为true
*/
int x=3;
System.out.println(x>2&x<5);//true
System.out.println(x<2|x>5);//false
}
}
位运算符
用于二进制位运算的符号
class OperateDemo4
{
public static void main(String[] args)
{
//System.out.println(6&3);
//System.out.println(6|3);
//System.out.println(~6);//取反操作,一般不用,结果为7
System.out.println(3<<2);//3左移2位,3*2^2
System.out.println(3>>1);//3右移1位,3/(2^1)
}
}
>>>:无符号右移:数据进行右移时,高位出现的空位,无论原先最高位是什么,空位都用0补 ;
高效的运算首选对二进制位进行操作;
class OperateText
{
public static void main(String[] args)
{
//最有效率的方式算出2诚意8等于几
//System.out.println(2<<3);
int a=3,b=5;
System.out.println("a="+a+",b="+b);
/*
//对两个整数变量的值进行互换(不需要第三方变量)
//这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换,数据会变化
a=a+b; //a=8
b=a-b; //b=8-5=3
a=a-b; //b=8-3=5
*/
int a=3,b=5;
a=a^b; //a=3^5
b=a^b; //b=(3^5)^5=3
a=a^b; //a=(3^5)^3=5
System.out.println("a="+a+",b="+b);
}
}
在开发时,使用第三方变量实现值的交换,因为阅读性强
三元运算符
格式
(条件表达式)?表达式1:表达式2
如果条件为true,运算后的结果是表达式1;如果条件为false,运算后的结果是表达式2
class OperateDemo5
{
public static void main(String[] args)
{
int x=3,y;
y=(x>1)?100:200;
System.out.println("y="+y);
//获取两个整数中的较大值
int a=3,b=5;
int max=a>b?a:b;
System.out.println("max="+max);
}
}
程序流程控制
顺序结构,判断结构,选择结构,循环结构(同C++)
三元运算符就是if else语句的简写格式,但存在其局限性。
简写格式什么时候用? 当if else运算后有一个具体的结果时,可以简化成三元运算符。
局部代码块可以定义局部变量的生命周期,局部变量在该代码块结束时消亡。
switch(x)中,x的取值可以有四种类型:byte,short,int,char。
if和switch的应用
if:
1.对具体的值进行判断
2.对区间判断
3.对运算结果是boolean类型的表达式进行判断
switch:
1.对具体的值进行判断
2.值的个数通常是固定的
对于几个固定的值判断,建议使用switch语句。因为switch语句会将具体的答案都加载进内存,效率相对高。
do while 特点:无论条件是否满足,循环体至少执行一次
当对一个条件进行一次判断时,可以使用if语句,
当对一个条件进行多次判断时,可以使用while语句
注意:
在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要
循环通常情况下,需要定义条件,需要控制次数
for语句
class ForDemo
{
public static void main(String[] args)
{
int x=1;
for(System.out.println("a");x<3;System.out.println("0")) //条件是表达式即可,不一定是for(int i=0;i<=10;i++)这种形式;如果需要不同表达式,则用逗号隔开
{
System.out.println("d");
x++;
}
}
}
for和while的特点:
1.for和while可以互换
2.格式上的不同,在使用上有点区别
如果需要通过变量来对循环进行控制,该变量值作为循环增量存在时,区别就可以体现出来
class ForTest
{
public static void main(String[] args)
{
//打印1~10十个数字
int x=1;
while(x<11) //while结束后,x还驻留在内存中
{
System.out.println("x="+x);
x++;
}
for (int y=1;y<=10 ;y++ ) //for循环结束,y消亡
{
System.out.println("y="+y);
}
}
}
嵌套循环练习
class ForForTest
{
public static void main(String[] args)
{
/*
输出如下图形
*****
****
***
**
*
*/
for(int x=1;x<=5;x++)
{
for(int y=5-x;y>=0;y--) //使用x控制y的值
{
System.out.print("*");
}
System.out.println(); //每次行的输出结束后,换行
}
System.out.println("--------------");
/*
*
**
***
****
*****
*/
for (int x=1;x<=5 ;x++ )
{
for (int y=1;y<=x ;y++ ) //使用x控制y的范围
{
System.out.print("*");
}
System.out.println(); //每次行的输出结束后,换行
}
System.out.println("--------------");
/*
54321
5432
543
54
5
*/
for (int x=1;x<=5 ;x++ )
{
for (int y=5;y>=x ;y--)
{
System.out.print(y);
}
System.out.println();
}
System.out.println("--------------");
/*
1
22
333
4444
55555
*/
for (int x=1;x<=5 ;x++ )
{
for (int y=1;y<=x ; y++)
{
System.out.print(x);
}
System.out.println();
}
}
}
class ForFor99
{
public static void main(String[] args)
{
/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
……
*/
for (int x=1;x<=9 ;x++ )
{
for (int y=1; y<=x;y++ )
{
System.out.print(y+"*"+x+"="+y*x+"\t");//使用制表符'\t'能够实现输出时对齐
}
System.out.println();
}
/*
\n 回车
\t 制表符
\b 退格
\r 按下回车键
windows系统中回车符其实是由两个符号组成的\r\n
linux中回车符是\n
*/
}
}
class BreakContinueDemo
{
public static void main(String[] args)
{
/*
break 跳出
作用的范围:只在switch语句和循环语句中使用
※当break语句单独存在时,下面不要定义其他语句,因为执行到break语句时跳出,后面的语句不会执行
break跳出当前循环,如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号来完成
*/
for (int x=0;x<3 ;x++ )
{
System.out.println("x="+x);
break; //第一次循环的最后跳出,只输出一次x=0
}
System.out.println("---------------");
loop1:for (int x=0;x<3 ;x++ ) //对for循环起名
{
loop2:for (int y=0;y<4 ;y++ )
{
System.out.println("x="+x);
break loop1; //在内循环中第一次执行输出语句后,直接跳出外循环loop1,结果只输出一次x=0
}
}
System.out.println("---------------");
/*
continue 继续
作用的范围:循环结构
作用:结束本次循环,继续下次循环
*/
for (int x=0;x<11 ;x++ )
{
/*
在进入循环后,先执行continue语句,跳出当前循环进行下次循环
continue;
System.out.println("x="+x); //该语句无法执行,编译报错。
*/
if (x%2==0) //x为偶数时,不输出,继续下次循环
{
continue;
}
System.out.println("x="+x);
}
System.out.println("---------------");
loop1:for (int x=0;x<3 ;x++ ) //对for循环起名
{
loop2:for (int y=0;y<4 ;y++ )
{
System.out.println("x="+x);
continue loop1; //在内循环中第一次执行输出语句后,跳到外循环继续执行,输出x=0,x=1,x=2
}
}
}
}