1.运算符
1.1算数运算符:
1.2特别强调(算数运算符)
(1)除“/”
System.out.println(10/4);//这里是两个整形像除,因此结果也是整形自动向下整为2
System.out.println(10.0/4);//10.0默认为double型,因此结果为2.0
double d = 10 / 4;//这个实际上就是将整形2自动转换成double型2.0
System.out.println(d);//运行结果是2.0
(2)取模“%”
在这里需要强调一个取模的公式:a % b = a - a / b * b
//10%-3 = 10-10/(-3)*(-3)=1
System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
(3)自增“++”
/*
作为表达式
前++:++i先自增后赋值
后++:i++先赋值后自增
*/
int j = 8;
int i = 8;
int z = ++j;//先j+=1;k=j
int k = i++;//先k=j;j+=1
//此时i=9,j=9,z=9,k=8;
1.2关系运算符
关系运算符的结果都是boolean型,也就是要么是true,要么是false。通常在if结构的条件中或者循环结构的条件中使用。
1.3逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。
文字描述
总体看起来好像有点复杂,下面分组进行区分。
(1)“&&”和“&”基本规则
//相同点
//都需要两个条件均成立才能返回true,否则返回false
//区别
int a = 4;
int b = 9;
//对于 && 短路与而言,如果第一个条件为false。后面的条件不在判断
//对于 & 逻辑与而言,如果第一个条件为false。后面的条件仍然会判断
if(a<1 && ++b<50)
{
System.out.println("ok");//不输出OK,因为存在一个条件不成立
}
System.out.println(a +" "+b);//a=4,b=9
//因为第一个条件不满足所以++b不执行
if(a<1 & ++b<50)
{
System.out.println("ok");//不输出OK,因为存在一个条件不成立
}
System.out.println(a+" "+b);//a=4.b=10;
//虽然第一个条件不满足,但对于逻辑与而已++b执行
(2)“||”和“|”基本规则
//相同点
//只要两个条件中有一个成立就返回true,否则返回false
//区别
//对于||短路或:如果第一个条件为true则第二个条件不会判断,最终结果为true,效率高
//对于|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
int a = 4;
int b = 9;
if(a>1 || ++b>4){
System.out.println("ok");
}
System.out.println("a="+a+"b="+b);//4 9
if(a>1 | ++b>4){
System.out.println("ok");
}
System.out.println("a="+a+"b="+b);//4 10
1.4赋值运算符
赋值运算符“=”,int a = 10 ,就是将a的值变为10。该部分和c语言一样。复合赋值运算符如“+=”,“-=”,“*=”,“/=”,“%=”。具体用法举个例子:a+=10等价于a=a+10,其余的一次类推。
相关细节
(1)运算符顺序从右向左 :int num = a+b+c,先算右边的再把右边的赋值给左边
(2)赋值运算符的左边 只能是变量,右边可以是是变量、表达式、常量值:int num = 20;int num = 78*34-10;int num = a
(3)赋值运算符会进行类型的转换
byte c = 2;
c += 3;//等价于(byte)(b+2);
//c =c+2这样写就会发生错误
// 因为c+2为整形,无法直接赋值,但是复合赋值运算符会自动转换
1.5三元运算符
基本语法
条件表达式:?表达式1:表达式2;
1.如果条件表达式为true,运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2;
int a = 10;
int b = 99;
int result = a>b ? a++ : b--;
//a>b为false,因此运算第二个表达式
相关细节
(1)表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)举一个错误的例子:
int c = a>b ? 1.1:3.4;//因为最后会返回double型,而c为整形,因此这是错误的
(2)三元运算符可以转成if--else语句(因为三元运算符的本质就是先判断再选择)
1.6运算符的优先级
梳理一下:
(1)(),{}等
(2)单目运行++ --
(3)算术运算符
(4)位移运算符
(5)比较运算符
(5)逻辑运算符
(6)三元运算符
(7)赋值运算符
2.标识符
2.1标识符的命名规则和规范
标识符的概念
1.java中对各种变量、方法和类等命名时使用的字符序列称为标识符
2.凡是自己可以起名字的地方都叫标识符 int num1 = 90;
标识符的规则(必须遵守)
标识符的规范(尽量遵守)
3.输入
import java.util.Scanner;//导入java.util下的scanner类导入
/*
1.引入/导入scanner类所在的包
2.创建scanner对象,new创建一个对象myscanner
3.接收用户输入,使用相关的方法
*/
//当程序执行到next方法时,使用相关的方法
public class tree {
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();//接收用户输入int,其他数据类型一次类推
System.out.println("名字="+name+" 年龄="+age);
}
}