运算符
package com.anonymous.javase.day01;
import java.math.BigDecimal;
public class Day01_Demo1 {
public static void main(String[] args) {
//赋值运算符(注意点)
//Infinity ANd -Infinity
System.out.println(100/0.0);//Infinity
System.out.println(100.0/0);//Infinity
System.out.println(-100/0.0);//-Infinity
System.out.println(-100.0/0);//-Infinity
//NaN(Not a Number)
System.out.println(0.0/0.0);//NaN
double d = 0.0/0.0;
/*
* NaN不等于自己
*/
System.out.println(d==d);//false
//三目运算符
/*
* 格式:ele ? ele2 : ele3;
*/
boolean lean = 5 > 3 ? true :false;
System.out.println(lean);//true
//案例
/*
* 分页计算
*/
int number = 101;//内容
int page = 10;//把内容分几页总页数
int pageNum = number % page ==0 ? number/page : (number/page)+1;
System.out.println(pageNum);
//位运算符
// & ^ | ~ << >>
/*
* 使用值
* 3--->0011
* 4--->0100
* 5--->0101
*/
/* 0011
& 0101
0001*/
System.out.println(3&5);
//& 与 如果两个同时为1下面值就为1.其他一律为零
/* 0011
^ 0101
0110*/
System.out.println(3^5);
//^异或 如果如果两个同时为零或者是1.下面都是0.其余都是1
/* 0011
| 0101
0111*/
System.out.println(3|5);
//| 或 两个中至少有一个1,下面都是为1,其余为零
/*~ 0011
1100*/
System.out.println(~3);
//~取反 把1改为0 0改1
/*>>1 0000 0100 ---> 0000 0010*/
/*>>2 0000 0100 ---> 0000 0001*/
System.out.println(4>>1);
System.out.println(4>>2);
//右移 --->不足的移位补充0
/*<<1 0000 0100 --->0000 1000 */
/*<<2 0000 0100 --->0001 0000 */
System.out.println(4<<1);
System.out.println(4<<2);
//左移---->不足的位置补充0
//不好理解
/*
* 可以理解为
* 右移是除
* 左移是乘
* >>1 /2的一次幂
* >>2 /2的二次幂
* >>n /2的n次幂
*
* <<1 *2的一次幂
* <<2 *2的二次幂
* <<n *2的n次幂
* 但是在面试的时候不可以这么说.面试中还是说移位好
*/
//两个变量值的交换
//有三种方式
//1:引入第三方变量
int a = 34;
int b = 23;
int c = a;
a = b;
b = c;
System.out.println(a);//23
System.out.println(b);//34
//不引入第三方变量
a = 34 ;
b = 23;
a = a + b;
b = a - b;
a = a - b;
System.out.println(a);//23
System.out.println(b);//34
//使用位运算符^
a = 34;
b = 23;
a = a^b;
b = a^b;
a = a^b;
System.out.println(a);
System.out.println(b);
//赋值运算符
System.out.println((0.6/0.2)==3.0);//false
//????
/*
* 难道这样运算有错误,其实不然,是
* JAVA中double和float无法解决小数的精确度
* 这个使用需要使用到java中BigDecimal
*/
BigDecimal bigDecimal = new BigDecimal("0.6");
BigDecimal bigDecimal2 = new BigDecimal("0.2");
BigDecimal divide = bigDecimal.divide(bigDecimal2);
System.out.println(divide.doubleValue()==3.0);//true
}
}
Break-Continue-Return
package com.anonymous.javase.day01;
public class Day01_Demo2 {
public static void main(String[] args) {
//break return continue 三者之间的区别
//continue
for (int i = 0; i < 20; i++) {
if (i==10) {
continue;
}
//System.out.println(i);
//0 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19
//跳过当前的一次条件中所控制的循环继续执行下面的
}
//break
for (int i = 0; i < 20; i++) {
if (i==10) {
break;
}
System.out.println(i);
//0 1 2 3 4 5 6 7 8 9 123
//结束当前的循环,继续进行下面的
}
System.out.println("123");
//return
for (int i = 0; i < 20; i++) {
if (i==10) {
return;
}
System.out.println(i);
//0 1 2 3 4 5 6 7 8 9
//结束当前循环,不会执行下面的程序
}
System.out.println("123");
}
}
重载设计:
package com.anonymous.javase.day01;
import java.math.BigDecimal;
public class Day01_Demo3 {
public static void main(String[] args) {
//重载设计
/**
* 重载的设计是为了解决方法功能相同,而名称不同的问题
* 重载判断原则:
* 两同以不同
* 同:同一个类中,方法名相同
* 不同:参数列表,参数顺序,参数个数
*/
//列子将两个字符串进行相加,和两个整形(int)相加
demo1("45", "45.0008");
demo1(45 ,64);
}
//BigDecimal
public static void demo1(String str1,String str2){
//将连个字符串转化为整形
try{
BigDecimal bigDecimal1 = new BigDecimal(str1);
BigDecimal bigDecimal2 = new BigDecimal(str2);
BigDecimal add = bigDecimal1.add(bigDecimal2);
System.out.println(add);
}catch(Exception e){
throw new NumberFormatException("数字格式化异常");
}
}
//int
public static void demo1(int i1,int i2){
System.out.println(i1+i2);
}
}