一.逻辑运算符:
1.&&:逻辑"与"(并且):两个都为true结果为true;有一个为false,结果为false;
2.||:逻辑"或"(或者):有一个为true,结果为true;
?3.!:逻辑"非"(不是...):!true即false,!false即true
二..位运算符:&,| ,^可以操作整数,和布尔类型的。这里的例子主要操作"布尔类型",效果同"逻辑运算符"一样。
但不同的是,"逻辑运算符"具有"短路行为"。
4.&:按位"与":效果同逻辑&&,只是没有短路行为
5.|:按位"或":效果同逻辑||,只是没有短路行为
6.^:按位"异或":两边相同,结果为false,不同为true;
位运算符:
1.<< : 将左操作数的二进制位,向左移动右操作数的位数;右侧空位补0;
int num1 = 10;
System.out.println(num1 << 2);
实际移动的位数 = 右操作数 % 32
每左移1位,相当于原数 * 2;
2.>> : 带符号右移:每右移1位,右侧数字丢弃,左侧补原最高位的(符号位)的值。
每右移一位,相当于原数 / 2;
正数右移,始终是正数;
负数右移,始终是负数;
3.>>> : 无符号右移:每右移1位,右侧数字丢弃,左侧补0;
对于负数,一旦无符号右移1位,将变为正数;
4.& :按位与:两位都是1,结果为1,其它都为0;
5.| : 按位或:有1位是1,结果为1,其它都为0;
6.^ : 按位异或:两位相同,结果0,不同结果为1;
7.~ : 按位取反:0 变 1 ,1 变 0;
三….三目运算符:
条件表达式 ? 表达式1 : 表达式2;
注意:
1.条件表达式:必须要返回一个true或false,
2.如果为true,执行表达式1,
如果为false,执行表达式2;
3.表达式1和表达式2,一定要返回一个结果,不能是System.out.println()等语句;而且必须要一个变量接收;
例:
class Demo
{
public static void main(String[] args)
{
int num1 = 100;
int num2 = 2000;
int max = num1 > num2 ? num1 : num2;
System.out.println("max = " + max);
//求三个数的最大值-->嵌套的三目运算符
int a = 100;
int b = 2000;
int c = 30;
max = a > b ? (a > c ? a : c) : (b > c ? b : c) ;
System.out.println("max = " + max);
}
}
}
四…从控制台接收数据,需要使用Java的类库。
我们现在只需要记住三个步骤就可以
1.在定义类(class语句)之前:
import java.util.Scanner;
2.在main方法里:
Scanner sc = new Scanner(System.in);
3.获取数据:
1.整数:sc.nextInt();
2.字符串:sc.next();
例: import java.util.Scanner;
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
//引导用户输入数据:
System.out.println("请输入第一个数:");
//接收一个数据
int num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = sc.nextInt();
System.out.println("你输入的数是:" + num1 + " 和 " + num2 + " 它们的和是:" + (num1 + num2));
int max = num1 > num2 ? num1 : num2;
System.out.println("你输入的数是:" + num1 + " 和 " + num2 + " 它们的最大值是:" + max);
}
}
例2:
键盘录入三个数据,获取这三个数据中的最大值
import java.util.Scanner;
class Demo2
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = sc.nextInt();
System.out.println("请输入第三个数:");
int num3 = sc.nextInt();
int max = num1 > num2 ? (num1 > num3 ? num1 : num3) : (num2 > num3 ? num2 : num3);
System.out.println("它们的最大值是:" + max);
}
五….if语句的格式1:
...程序代码....
if(判断表达式){
//如果判断表达式结果为true,将执行这里的代码
}
.....程序的后续代码.....
注意:
1.判断表达式必须返回一个true或false;
2.如果if体语句只有一条,可以省略大括号。但是不建议。
*/
class Demo
{
public static void main(String[] args)
{
int score = 30;
if(score >= 60){
System.out.println("你及格了!");
System.out.println("请客吃饭吧!");
}
System.out.println("你的分数是:" + score);
}
}
if语句的格式2:
.....程序的前置代码.....
if(判断表达式){
//如果为true,执行这里
}else{
//如果为false,执行这里
}
......程序的后续代码......
class Demo
{
public static void main(String[] args)
{
int score = 30;
if(score >= 60){
System.out.println("恭喜你,及格了,请客吃饭!");
}else{
System.out.println("不及格,找家长!");
}
System.out.println("你的分数是:" + score);
}
}
if语句的格式3:
if(关系表达式1){//是否学习Java?
//语句体:学习Java
}else if(关系表达式2){//不学习Java,学习IOS?
//语句体:学习IOS
}else if(关系表达式3){//不学习IOS,学习C++?
//语句体:学习C++
}else{
//学习平面设计
}
例子:
90-100 优秀
80-90 好
70-80 良
60-70 及格
60一下 不及格
class Demo
{
public static void main(String[] args)
{
int score = 950;
if(score >= 90 && score <= 100){
System.out.println("优秀");
}else if(score >= 80 && score < 90 ){
System.out.println("好");
}else if(score >= 70 && score < 80 ){
System.out.println("良");
}else if(score >= 60 && score < 70){
System.out.println("及格");
}else if(score >= 0 && score < 60){
System.out.println("不及格");
}else{
System.out.println("不正确的分数");
}
}
例:/*
获取三个数据中的最大值
由此案例讲解if语句的嵌套
class Demo3
{
public static void main(String[] args)
{
int num1 = 100;
int num2 = 20;
int num3 = 30;
//使用三目运算符
int max = num1 > num2 ? (num1 > num3 ? num1 : num3) :
(num2 > num3 ? num2 : num3);
System.out.println("max = " + max);
int max2 = 0;
//使用if语句:嵌套的if语句.建议:不要超过2层,如果需要第3层if语句,那么请先考虑优化代码;
if(num1 > num2){
if(num1 > num3){
max2 = num1;
}else{
max2 = num3;
}
}else{
if(num2 > num3){
max2 = num2;
}else{
max2 = num3;
}
}
}
}
一…1)..switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
2)..执行流程:
1.查找case:先找匹配的case,后找default
2.执行代码:按照代码的顺序执行;
3)… switch语句的注意事项:
1.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
2.default可以省略吗?
可以省略。一般不建议。除非判断的值是固定的。(单选题)
3.break可以省略吗?
可以省略,一般不建议。否则结果可能不是你想要的
如果某个case匹配成功,执行完case内语句后如果没有break,
将无条件的继续执行后续的case或default内的代码,而且
不会进行case匹配。
4.default的位置一定要在最后吗?
可以出现在switch语句任意位置。
5.switch语句的结束条件
遇到break
执行到程序的末尾
二 while循环格式:
while(条件表达式){
//循环体
}
1.条件表达式:一定要是一个返回boolean类型的结果的表达式。可以是条件表达式或逻辑表达式
2.如果条件表达式返回true,则进入循环体,执行循环体内的代码。
3.执行完循环体内代码后,再次回到"条件表达式"进行验证,如果还是为true,则再次进入循环体,如果为false,则跳到循环体后执行后续代码。
例子”:.打印1--100之间,所有偶数的累加和
class Demo
{
public static void main(String[] args)
{
int num = 1;
int sum = 0;
while(num <= 100){
//先判断
if(num % 2 == 0){
sum += num;
}
num++;
}
System.out.println("1--100的偶数和:" + sum);
}
}
三 do_while循环:
格式:
do{
//循环体
}while(判断语句);
1.执行流程:
1).先执行"循环体"语句
2).进行while判断;
如果为true:再进入循环体执行循环体语句;
如果为false:跳到do_while的后续代码执行;
2.与while循环的区别:
1).do_while:总是先无条件的执行一次循环体语句,然后再进行判断;
2).while:总是先进行判断,然后再决定是否进入循环体。
or循环的基本语法:
四.. for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
三条语句,都不是必须的,可以省略,可以分开写。但是,分号一定要写
1.初始化语句:用于初始化循环变量,只在循环语句被第一次执行时,执行一次;
2.判断条件语句:产生一个boolean值,如果为true进入循环,否则,结束循环;
3.控制条件语句:一般用于操作循环变量,用以促成"判断条件语句"产生false,结束循环
例:
//打印1--100之间的整数
class Demo
{
public static void main(String[] args)
{
for(int num = 1;num <= 100;num++){
System.out.println("num = " + num);
}
*/
//计算1--100之间所有的偶数和
//注意:num 的作用域范围在for循环内部
int sum = 0;
for(int num = 1 ; num <= 100; num++){
if(num % 2 == 0){
sum+=num;
}
}
}System.out.println("sum = " + sum);
例: "水仙花"数
class Demo
{
public static void main(String[] args)
{
int count = 0;
for(int num = 100 ; num <= 999 ; num++){
//取每一位
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num / 100 % 10;
//判断
if((ge * ge * ge + shi * shi * shi + bai * bai * bai) == num){
System.out.println("找到水仙花数:" + num);
count++;
}
}
System.out.println("水仙花的数量是:" + count);
}
}
求:5的阶乘:
1 * 2 * 3 * 4 * 5
*/
class Demo
{
public static void main(String[] args)
{
int result = 1;
for(int num = 1; num <= 5 ; num++){
result *= num;
}
System.out.println("5的阶乘是:" + result);
}
需求:请输出如下图形
*
**
***
****
*****
class Demo2
{
public static void main(String[] args)
{
for(int i = 1 ;i <= 5; i++){
for(int j = 1 ; j <= i ; j++){
System.out.print("*");
}
System.out.println();
}
}
}
输出九九乘法表:
class Demo3
{
public static void main(String[] args)
{?
for(int i = 1 ;i <= 9 ;i++){
for(int j = 1 ; j <= i ; j++){
System.out.print(j + "*" + i + "=" + (i*j) + "\t");
}
System.out.println();
}
}
}
五,,, break和continue
1.break用于switch语句中,结束switch语句;
break也可以用于循环语句中,代表结束循环;
2.continue:只能用于循环语句,代表:结束本次循环,继续下一次循环