1.位运算
<< :空位补零,被移除的高位丢弃,空位补0.
>> : 被移的二进制最高位是0,被移后,空缺位补0.
最高位是1,被移后,空缺位补1.
>>> : 被以后最高位(0|1),空缺位都补0.
& :1&1为1,其余都为0.
| : 0|0为0,其余都为1.
^ : 1^1=0, 0^0=0,1^0=1,0^1=1.
~ : 正数取反,负数取反,各二进制码。按补码各位取反
public class demo01 {
public static void main(String[] args) {
int a = 4;
int b = 3;
a=a>>1;
b=b<<2;
System.out.println(a);
System.out.println(b);
int x=10;
x=x>>>1;
System.out.println("x="+x);
int y = 5;
int z = 3;
/*
0000 0101 5
0000 0101 5
0000 0011 3
0000 0111 7
*/
System.out.println(x&y);
System.out.println(x|y);
System.out.println(x|z);
System.out.println(x^y);
System.out.println(~x);
System.out.println(~z);
}
}
2.控制台输入
实现控制台输入信息功能(Java为我们提供了Scanner)。
import java.util.Scanner;
public class demo7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名");
String name = scanner.next();
System.out.println("请输入年龄");
int age = scanner.nextInt();
System.out.println("姓名:"+name+"\t年龄:"+age);
}
}
(1).next()方法用以 取得用户输入的字符串;
(2).nextInt()将取得的输入字符串转换为整数类型;
(3).nextFloat()转换成浮点型;
(4).nextBoolean()转 换成布尔型.
3.控制语句
(1).if语句
if(条件【条件为真向下执行,反之跳过if语句】){
//语句
}
System.out.println("请输入年龄:");
int age =scanner.nextInt();
if(age>=0&&age<=9){
System.out.println("儿童");
}
else if(age>=10&&age<=19){
System.out.println("少年");
}
else if(age>=20&&age<=29){
System.out.println("青少年");
}
else{
System.out.println("长命百岁");
}
(2).switch语句
import java.util.Scanner;
public class hw_02 {
public static void main(String[] args) {
/* 2.编程一个程序,计算今天是今年的第几天.
例如: 控制台分别输入年月日
2023
10
30*/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year=scanner.nextInt();
System.out.println("请输入月份:");
int month =scanner.nextInt();
System.out.println("请输入日期:");
int day =scanner.nextInt();
int flag=0;
if((year%4==0&&year%100!=0)||(year%400==0)){
switch (month){
case 1:
flag=day;
break;
case 2:
if(day<29)
flag=31+day;
else
System.out.println("输入错误,超出天数");
break;
case 3:
flag=31+29+day;
break;
case 4:
flag=31*2+29+day;
break;
case 5:
flag=31*2+30+29+day;
break;
case 6:
flag=31*3+30+29+day;
break;
case 7:
flag=31*3+30*2+29+day;
break;
case 8:
flag=31*4+30*2+29+day;
break;
case 9:
flag=31*5+30*2+29+day;
break;
case 10:
flag=31*5+30*3+29+day;
break;
case 11:
flag=31*6+30*3+29+day;
break;
case 12:
flag=31*6+30*4+29+day;
break;
}
}
System.out.println("今天是今年的第"+flag+"天");
}
}
表达式可以是byte、short、int、char、枚举类型、String类型;
case语句后面只能使用常量表达式;
case后的值不能重复;
某个case分支如果没有提供break语句,则继续执行下一个case后的语句;
当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句;
如果没有default子句,则程序直接跳出switch语句。
4.循环
(1).while循环
while(逻辑表达式【为ture执行后面语句】){
循环体
}
while(flag<deep){
//白天
flag+=3;
if(flag>=deep){
day++;
break out;
}
//晚上
flag-=2;
day++;
}
(2).do-while循环
do{
循环语句
}while(逻辑表达式);【先执行一次语句,再判断是否为真,所以至少会执行一次语句。
】
int connt;
Scanner scanner = new Scanner(System.in);
do{
System.out.println("请输入年份");
int year=scanner.nextInt();
if((year%4==0&&year%100!=0)||(year%400==0)){
System.out.println(year+"年是闰年");
}
else{
System.out.println(year+"年不是闰年");
}
System.out.println("是否继续?1.继续,0.退出");
connt= scanner.nextInt();
}while(connt==1);
(3).for循环
for(表达式1;表达式2;表达式3){语句}
【首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句, 接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.】
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
System.out.print("*");
if(i==3){
break out;
}
}
(4).break&continue
break:
可以强行退出循环
continue:
用于终止某次循环过程,跳过循环体中 continue 语句下面未执行的循环,开始下一次循环过程;
public static void print(int num){
out:for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
System.out.print("*");
if(i%2==0){
continue ;
}
if(i==3){
break out;
}
}
System.out.println();
}
想要结束外部循环在外部循环加(标签),break (标签);即可。
5.Java中方法的引用
方法声明格式: [访问权限修饰符 修饰符...] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;... ... ...
[return 返回值;]
}
修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
方法体:方法体必须有{}括起来,在{}中编写完成方法功能的代码
返回值:方法在执行完毕后返还给调用它的环境的数据。
实参:调用方法时实际传给方法的数据
public class demo02 {
public static void main(String[] args) {
demo02.menu();
int max = demo02.max(10,5);
System.out.println("最大值:"+max);
demo02.print(10);
}
public static void menu(){
System.out.println("-----------------");
System.out.println("0.退出");
System.out.println("1.收支明细");
System.out.println("2.登记收入");
System.out.println("3.登记支出");
System.out.println("请选择:");
}
public static int max(int a ,int b){
return a>b?a:b;
}
public static void print(int num){
out:for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
System.out.print("*");
if(i%2==0){
continue ;
}
if(i==3){
break out;
}
}
System.out.println();
}
}
}