
算数运算符是一种特殊的符号,用以表示数据点运算、赋值和比较等。
% 是取模(取余)
public class ArithmeticOperator{
public static void main(String[] args){
System.out.println(10 / 4); //从数学的角度看是2.5,但是因为Java默认10和4为整数int类型,所以输出为2
System.out.println(10.0 / 4); //此时输出为2.5
double d = 10 / 4; //先进行10/4运算,得到的是2,然后2再赋值给d,所以d=2.0
System.out.println(d);
}
}
取模的使用
% 的本质 看一个公式 a % b = a - a / b * b
public class ArithmeticOperator{
public static void main(String[] args){
System.out.println(10 % 3); //1
System.out.println(-10 % 3); //-1
System.out.println(10 % -3); //1
}
}
算术运算符面试题
int i = 1;
i = i++;
System.out.println(i);
问结果是什么?为什么?
结果是1,规则使用临时变量:(1) temp = i; (2) i = i + 1; (3) i = temp;
这样记,i = 1已经赋值给了 i ,所以 i = 1,之后 i 又自增,自增完之后并没有赋值
int i = 1;
i = ++i;
System.out.println(i);
输出为2
prinln是输出加换行,print只是输出但是不换行
假如还有59天放假,问:合xx个星期零xx天
public class ArithmeticOperatorExercise{
public static void main(String[] args){
//分析
//1.使用int变量 days 保存天数
//2.一个星期是7天,星期数: days / 7,零xx天 days % 7
//3.输出
int days = 59;
int weeks = days / 7;
int leftDays = days % 7;
System.out.println(days + "天合" + weeks + "星期零" + leftDays + "天");
}
}
定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为: 5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。【234.5】
public class ArithmeticOperatorExercise{
public static void main(String[] args){
//分析
//1.使用double变量 d1 保存要求的华氏温度值234.5
//2.根据公式求摄氏温度: double d2 = 5/9*(d1 - 100)
//3.输出
double fahrenheit = 234.5;
double CentigradeTemperature = 5.0/9.0*(fahrenheit - 100); //注意一定要写成5.0和9.0
System.out.println("华氏温度" + fahrenheit + "对应的摄氏温度为:" + CentigradeTemperature);
}
}
注意:变量名尽量用英文,别用单个字母来表示
逻辑关系运算符短路与 &&,短路或 ||,取反 !
逻辑与 &,逻辑或 |,^逻辑异或
!取反,^逻辑异或
异或就说不相同为true,相同为false
+= , -= , *= , /= , %= 等
复合赋值运算符会进行类型转换
byte b = 3; b += 2; // 等价于 b = (byte)(b+2); b ++; // b = (byte)(b+1);三元运算符
基本语法
条件表达式?表达式1:表达式2;
使用细节:
- 表达式1和表达式2要为可以赋值给接受变量的类型
- 三元运算符可以转换成 if – else 语句
public class TernaryOperator{
public static void main(String[] args){
int a = 10;
int b = 99;
int result = a > b ? a++ : b--;
System.out.println(result);
//案例:实现三个数的最大值
int n1 = 55;
int n2 = 33;
int n3 = 123;
int max1 = n1 > n2 ? n1 : n2;
String max = max1 == n1 ? "n1" : "n2";
max1 = max1 > n3 ? max1 : n3;
max = max1 == n3 ? "n3" : max;
System.out.println("最大值是" + max + ":" + max1);
//使用一条语句来实现
max1 = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
max = (max1 > n1 ? (max1 > n2 ? "n3" : "n2") : "n1");
System.out.println("=====================");
System.out.println("最大值是" + max + ":" + max1);
}
}
标识符的命名规则和规范
标识符:Java对各种变量、方法和类等命名时使用的字符序列
凡是自己可以起名字的地方都叫标识符
不可以使用关键字和保留字,数字不可以开头
包名:多单词组成时所有字母都小写:aaa.bbb.ccc
驼峰法:
类名、接口名:多单词组成,所有单词的首字母大写:XxxYyyZzz[大驼峰]
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰]
编程中,需要接受用户输入的数据,就可以使用键盘输入语句来获取 Input.java,需要一个扫描器(对象),即Scanner
步骤:
import java.util.Scanner;
public class Input{
public static void main(String[] args) {
//演示接受用户的输入
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入名字");
String name = myScanner.next();//表示接受用户的输入
System.out.println("请输入年龄");
int age = myScanner.nextInt();//表示接受用户的输入
System.out.println("请输入薪水");
double salary = myScanner.nextDouble();//表示接受用户的输入
System.out.println("人的信息如下");
System.out.println("name=" + name + "age=" + age + "salary=" +salary);
}
}
原码、反码、补码
按位与&、或|、异或^、取反~
public class Input{
public static void main(String[] args){
System.out.println(~2);
}
}