继续学习 java 学习,不想多说话了,没什么可说的,上干活
常见运算符
算术运算符 | +,-,* ,/ (整除) |
---|---|
关系运算符 | >,<,<=,>=,!=(不等于),==(等于)(不存在’!>’ ‘!<’ |
逻辑运算符 | && 或者&(与),二条竖杠 或者一条竖杠 (或), !(非) |
赋值运算符 | = (’=‘将右边结果值给左边,优先级低,比++,–高), += ,-= ,*= ,/= ,%= (a+=10等价a=a+10) |
自加和自减运算符 | i++,++i ,i–,--i(i++与++i的区别与c语言相同。 |
//代码演示关系运算符
public class Hello {
public static void main(String[] args) {
//定义整数类型
int num =10;
//定义字节数据(类型 定义名称 = 值 )
int num1 = -10;
System.out.println(num > num1);
System.out.println(num < num1 );
System.out.println(num <= num1 );
System.out.println(num >= num1 );
System.out.println(num == num1);
System.out.println(num != num1);
}
}
//逻辑运算符
public class Hello {
public static void main(String[] args) {
//定义整数类型
int a =10;
//定义字节数据(类型 定义名称 = 值 )
int b = -10;
int c =100;
System.out.println(a > b && c < a );//'与'必须全部为真返回为真
System.out.println( a > b && c < a );//'或'一个为真返回真
System.out.println(!(a<b));//取反
}
}
//赋值运算符
public class Hello {
public static void main(String[] args) {
//定义整数类型
int a =10;
//定义字节数据(类型 定义名称 = 值 )
int b = -10;
int c =100;
int d = 6 ;
int e =21 ;
a+=10;
b-=10;
c*=10;
d/=2;
e%=2;//取余
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
//自加和自减运算符
public class Hello {
public static void main(String[] args) {
//定义字节数据(类型 定义名称 = 值 )
int i =3;
i++;
System.out.println(i);
++i;
System.out.println(i);
i--;
System.out.println(i);
--i;
System.out.println(i);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
//产生原因'++i''--i'的优先级太高比=高,'i--','i++'优先级太低比‘=’低
int a = i++;//先用后加
System.out.println(a); //3
System.out.println(i); //4
int b = ++i;//先加1后用
System.out.println(b);//5
System.out.println(i);//5
int c = --i;//先减后用
System.out.println(c);//4
System.out.println(i);//4
int d = i--;//先用后减
System.out.println(d);//4
System.out.println(i);//3
}
}
import java.util.Scanner;
//导入对应包
public class Hello {
public static void main(String[] args) {
//获取一个Scanner对象
Scanner sc = new Scanner (System.in); //System.in标准输入流,System.out标准输出流
System.out.print("请输入一个数: ");
int a = sc.nextInt();//从控制台接收用户输出数值,定义.nextInt()必须输入数值
System.out.print("请输入一个数: ");
int b = sc.nextInt();
System.out.println("a+b= "+(a+b)); //输出a+b
}
}
小练习
1,根据天数(46)计算周数与其余天数
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
//获取一个Scanner对象
Scanner sc = new Scanner (System.in); //System.in标准输入流,System.out标准输出流
System.out.print("请输入天数:");
int day = sc.nextInt();//接收用户输出数值,定义.nextInt()必须输入数值
int weeks= day / 7 ;
int other = day % 7 ;
System.out.println("周 :"+(weeks));
System.out.println("其余天数 :"+(other));
}
}
2,控制台输入一个圆半径radius,求面积。
//方法一
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
//获取一个Scanner对象
Scanner sc = new Scanner (System.in); //System.in标准输入流,System.out标准输出流
System.out.print("请输入一个圆半径:");
int a = sc.nextInt();//接收用户输出数值,定义.nextInt()必须输入数值
float pi= (float)(3.14);
System.out.println("S= "+(a*a*pi)); //输出圆面积
}
}
//方法二
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
//获取一个Scanner对象
Scanner sc = new Scanner (System.in); //System.in标准输入流,System.out标准输出流
System.out.print("请输入一个圆半径:");
int a = sc.nextInt();//接收用户输出数值,定义.nextInt()必须输入数值
float pi= (float)(3.14);
float t= (float)( Math.pow (a,2));
System.out.println("S= "+(t*pi)); //输出圆面积
}
}
3,求二个数加减乘除取余。(加减乘除取余改的都一样)
import java.util.Scanner;
//导入对应包
public class Hello {
public static void main(String[] args) {
//获取一个Scanner对象
Scanner sc = new Scanner (System.in); //System.in标准输入流,System.out标准输出流
System.out.print("请输入一个数: ");
int a = sc.nextInt();//从控制台接收用户输出数值,定义.nextInt()必须输入数值
System.out.print("请输入一个数: ");
int b = sc.nextInt();
System.out.println("a*b= "+(a*b)); //输出a+b
扩充内容:位运算符:(计算机运算最快的运算符)
在计算机底层本质是二进制(半导体)运算(计算机底层本质上来说,是以补码运行的!!!!)。
常见的进制
十进制 | (人类最长的使用的10进制) 10个个位数:(0 1 2 3 4 5 6 7 8 9) 逢10进1 |
---|---|
二进制 | 个位数只有2个: (0 1)逢2进1 |
十六进制 | 0~9 ABCDEF 0xAF89AD(显示以0x开头) |
符号位:取数子二进制下最高位为符号位,0代表为正数,1代表为负数
正数:
正数的源码、反码、补码一致,也就是正数没有源码、反码、补码之说
负数:
源码:数值的二进制状态码
反码:符号位不变,其余各位取反,得到的就是反码
补码:反码+1,就是补码
位运算符
& | 与运算 :数字转换为二进制相加,上下都为1为1,不同为0 |
---|---|
竖线 | 或运算符 :数字转换为二进制相加,上下有1为1,没有为0 |
^ | 异或运算:数字转换为二进制相加,上下不同为1,相同为0 |
~ | 按位取反:数字转换为二进制相加,0转换为1,1转换为0 |
移位运算(比较常用)
<< | 左移运算符 |
---|---|
>> | 有符号右移运算 |
>>> | 无符号右移运算 |
典例(二分查找)
/**
二分查找:
数组必须是有序的(按大到小或者小到大排列)
取中间值进行比较
获取选择数的下标
*/
public class Test {
public static void main(String[] args) {
int arr [] =new int[]{0,1,2,3,4,5,6,7,8,9,10};
// 小编按小到大排序
//找的数字
int val=9;
System.out.println(binary_search(arr,val));
}
public static int binary_search(int arr[], int val){
//左边下标从0开始
int left=0;
int right=arr.length-1;
while (left<=right) {
//取出中间值下标
int middle = (left+right) >> 1;
//找到返回下标
if (val == arr[middle]) {
return middle;
} else if (val > arr[middle]) {
//如果中间值不是,比中间值大,证明在右边
left=middle+1;
} else if (val < arr[middle]) {
//如果中间值不是,比中间值大,证明在左边
right=middle-1;
}
}
//没有找到返回-1
return -1;
}
}