p72——p86
今天同学跟我说别学java,真的吗?唉,先把这视频干完吧。
逻辑运算符练习
x=6,y=6 x=6,y=5
x=11,y=6 x=11,y=5
z=48 错了,是50,注意y=true是赋值!!它是真的,这一行下去后z=48,下一句又是真的,然后就是50了!!被套路了。
解释(gpt说的):
在许多编程语言中,赋值操作符(
=
)用于将某个值赋给变量。在条件语句中,我们通常使用比较操作符(例如==
)来检查变量的值是否等于某个特定的值。因此,当你写
if(x=false)
时,它实际上是将x
赋值为false
,然后判断赋值操作的结果,而不是判断x
的值是否为false
。因为赋值操作成功并且返回被赋的值(在这里是false
),所以整个条件表达式的结果是假。而当你写
if(x=true)
时,实际上是将x
赋值为true
,然后判断赋值操作的结果。因为赋值操作成功并且返回被赋的值(在这里是true
),所以整个条件表达式的结果是真。这种情况通常是不推荐的,因为它可能导致混淆。应该使用比较操作符(例如
==
)来检查变量的值是否等于某个特定的值,而不是使用赋值操作符(=
)。
赋值运算符
复合赋值运算符会进行类型转换。例:
byte b = 2;
b += 2;//这里b=b+2,应该是个int,但是赋值给作为byte的b是编译不过去的。所以实际上,b+=2等价于b=(byte)(b+2);所以在b++时底层也有个类型转换b=(byte)(b+1)
三元运算符
条件表达式?表达式1:表达式2;
细节:表达式1和表达式2要为可以赋值给接受变量的类型(或可以自动转换)
这样不行
但是改成 int c = a > b ? (int)1.1 : (int)3.4;可以
三元运算符可以改成if—else语句。
实例:实现三个数的最大值
public class zuidazhi{
public static void main(String[] args){
int a,b,c;
int max = a > b? (a > c? a:c):(b>c? b:c);
}}
老师:
原理:
在第二行里把max1替换成前面的表达式。
运算符的优先级
大致印象
1.()、{}等
2.单目运算++ --
3.算术运算
4.位移运算
5.比较运算
6.逻辑运算
7.三元运算
8.赋值运算
标识符的命名规则和规范
规则:必须遵守
规范:这样做更专业
1.凡是可以自己取名的地方都叫标识符
2.规则:由大小写英文字母和数字、_、$组成,数字不能开头。
不能使用关键字和保留字,但是可以包含关键字和保留字。ps:保留字是现有java版本尚未使用,但以后版本可能会作为关键字使用。
严格区分大小写,长度无限制
标识符不能含空格
3.规范:包名:多单词组成时所有字母都小写
类名、接口名:多单词组成时,所有单词首字母大写XxxYyyZzz(大驼峰)
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始首字母大写,如xxxYyyZzz(小驼峰)
常量名:所有字母都大写,多单词用下划线连接XXX_YYY_ZZZ
键盘输入
Input.java,需要一个扫描器(对象),就是Scanner(是个类)
步骤:
1导入该类所在的包,java.util.*
2创建该类对象(声明变量)
3调用里面的功能
案例:可以从控制台接收用户信息,【姓名,年龄,分数】
import java.util.Scanner;//导入包和类
public class Input{
public static void main(String[] args){
//创建一个对象
Scanner myScanner = new Scanner(System.in);
//读取键盘输入
System.out.println("name?");
String name = myScanner.next();//读字符串
System.out.println("age?");
int age = myScanner.nextInt();//读整数
System.out.println("score?");
double score = myScanner.nextDouble();//读浮点
System.out.println("name:"+name+"age:"+age+"score:"+score);
}}