位运算符 对具体数据进行计算的 基本运算符号(0相当于false,1相当于true) 位与 & ---> 有0则0 位或 | ---> 有1则1 位异或 ^ ---> 相同则0,不同则1 一个值被位异或两次其值是它本身! 反码 ~ ---> 对数据全部取反(包含符号位)
class OperatorDemo1{
public static void main(String[] args){
int a = 8 ;
int b = 9 ;
System.out.println("原数据a:"+a);
System.out.println("原数据b:"+b);
System.out.println("-----------------------------");
//a^b赋值给了a
a = a ^ b ;
//a^b^b赋值给了b 此时这里b的值等于a
b = a ^ b ;
//a^b^a赋值给了a 完成两数交换
a = a ^ b ;
System.out.println("新数据a:"+a);
System.out.println("新数据b:"+b);
}
}
移位符号 数据1 >> 数据2 数据1的补码向右移动数据2的值 数据1最高位为1,则补齐1 数据1最高位为0,则补齐0 结论:数据1除以2的移动(数据2)次幂 数据1 << 数据2 数据1的补码向左移动数据2的值 数据1不论最高位是什么都舍弃,在末尾补0 结论:数据1乘以2的移动(数据2)次幂 数据1 >>> 数据2 数据1的补码向右移动数据2的值 不论数据1最高位是什么,永远都用0补齐
class OperatorDemo1{
public static void main(String[] args){
int num1 = 3 ;
int num2 = 2 ;
//数据1 << 数据2
int result = num1 << num2 ;
/*
分析:
int 类型 3 (向左移动数据2的值--->2)(正数原反补码都一样,切记补码操作!)
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000011
末尾用0补齐,最高位抹去
(00)000000 00000000 00000000 0000001100
大小为12 结论:数据1乘以2的移动(数据2)次幂 3*2^2=12
*/
System.out.println("<<符号运算:"+result);
/*
以下同理
*/
int result1 = num1 >> num2 ;
int result2 = num1 >>> num2 ;
System.out.println(">>符号运算:"+result1);
System.out.println(">>>符号运算:"+result2);
}
}
首先要导包 import java.util.Scanner ; 调用固定格式 Scanner 变量名 = new Scanner(System.in) ; 输入格式 int 变量名1 = 变量名.nextInt() ;--->前面是int类型,后面用nextInt() String 变量名2 = 变量名.nextLine() ;--->官方接收和输入字符串格式 String 变量名3 = 变量名.next() ;--->也能用来写字符串格式,但不是官方的
注意 .next Line(); 与 .next(); 区别
import java.util.Scanner;
class ScannerDome{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
String num2 = sc.nextLine();
System.out.println("int类型:"+num1);
System.out.println("String类型:"+num2);
/*
int类型:12
String类型:
分析:
因为每次输入数据都要按回车键,回车键也是一种字符串,所以被String录入了一行空行
解决办法:
1)在String收取数据前重新Scanner一个新的变量
2)使用.next();非官方收取数据
*/
System.out.println("------------------------------");
int num3 = sc.nextInt();
String num4 = sc.next();
System.out.println("int类型:"+num3);
System.out.println("String类型:"+num4);
/*
10
int类型:10
String类型:
------------------------------
10
hello
int类型:10
String类型:hello
*/
}
}
顺序结构语句 通过jvm在主方法中运行(main) 从上往下依次运行 通过关闭jvm的方式可以中断运行 System.exit(0) ;
选择结构语句if 结构-->1)--->单一情况判断 if(表达式){ ... } ... 结构-->2)--->两种情况判断,不是..就是.. if(表达式){ ... }else ... 结构-->3)--->多种情况,反复嵌套 if(表达式){ ... }else if(表达式1){ ... }else if(表达式2){ ... }... ...
import java.util.Scanner;
class IfDemo{
public static void main(String[] args){
//键盘输入信息
Scanner sc = new Scanner(System.in);
//提示信息
System.out.println("请输入一个数");
int num1 = sc.nextInt();
if(num1>10){
System.out.println("这个数大于十");
}else{
System.out.println("这个数小于等于十");
}
}
}
import java.util.Scanner;
class IfDemo2{
public static void main(String[] args){
String userName = "admin" ;
String passWord = "123456" ;
Scanner sc = new Scanner(System.in);
System.out.print("输入用户名:");
String inputUserName = sc.nextLine();
Scanner sc1 = new Scanner(System.in);
System.out.print("输入密码:");
String inputPassWord = sc1.nextLine();
//equals比较重要的字符串相等比较
if(inputUserName.equals(userName) && inputPassWord.equals(passWord)){
System.out.println("登陆成功!");
}else{
System.out.println("用户名或密码错误!");
}
}
}
import java.util.Scanner;
class IfDemo3{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并录入数据
System.out.println("请您输入的学生的成绩: ") ;
int socre = sc.nextInt() ;
/*
if(socre>=90 && socre<=100){
System.out.println("优秀") ;
}else if(socre>=80 && socre<90){
System.out.println("较优") ;
}else if(socre>=70 && socre<80){
System.out.println("良好") ;
}else if(socre>=60 && socre<70){
System.out.println("及格") ;
}else{
System.out.println("不及格") ;
}
*/
//测试程序:
//测试正确数据:正常范围内的数据
//测试边界数据:边界数据的是否在我们指定范围内
//测试错误数据:超了范围,不满足,应该也要包含进去
if(socre<0 || socre>100){
System.out.println("您输入的数据有误!") ;
}else if(socre>=90 && socre<=100){
System.out.println("优秀") ;
}else if(socre>=80 && socre<90){
System.out.println("较优") ;
}else if(socre>=70 && socre<80){
System.out.println("良好") ;
}else if(socre>=60 && socre<70){
System.out.println("及格") ;
}else{
System.out.println("不及格") ;
}
}
}