【零基础学Java】第六天 Java运算符,标识符,输入语句,控制结构,类和对象的注意事项
前言
1.双非在校大学生,想通过自学Java进大厂
2.给跟我一样的大学生分享我的经历,和学习资源
3.本版块将会记录从Java入门到就业的所有学习笔记和资源
4.我还会分享我在学习Java中遇到的各种问题和各种解决方法
1.运算符,标识符,输入语句的注意事项
1.% 的本质
a % b =a - a / b * b。 -8 % -3 = - 2 , 8 % -3 = 2 ,-8 % 3 = - 2
2./ 的陷阱
double a = 5 / 10 ; double b = 5.0/10//a = 0.0 b = 0.5
3.短路&& 与 逻辑& 的区别 (||与|类似)
&&:如果第一个条件为false,则第二个条件不判断,结果为false,效率高
&:不管第一个是否为false,第二个条件都要判断,效率低
4.逻辑异或( ^ )
5.复合赋值运算符会进行类型转换
byte a=3;a+=2;//正确,等价于a = (byte)(a+2);a++;//正确,等价于a = (byte)(a+1);a=a+2;//错误,int类型不能自动转换成byte
6.运算符优先级(大致)
(),{}等
单目运算符! ~ – ++
算术运算符 + -
位移运算符 <> >>> 位移
比较运算符 = instanceof(检查是否是类的对象) == !=
逻辑运算符 & ^ | && ||
三目运算符 ? :
赋值运算符 != ^= &= >>>= >>= <<= -= += %= /= *= =
7.标识符规则
标识符包含26个英文字母大小写,0-9,_ 或 $ ,不能是数字开头,不能含空格,不可用关键字和保留字,但可以包含。
8.标识符命名规范
包名:多单词组成时,所有字母都用小写。//com.hsp.crm
类名,接口名:多单词组成时,所有单词首字母都大写。//TankShotGame
变量名,方法名:多单词组成时,第一个单词首字母小写,第二个单词开始都大写。//tankShotGame
常量名:所有字母都大写。多单词时,每个单词用下划线连接。//TAX_RATE
2.键盘输入
接受用户的输入
1.引入Scanner类所在的包。
2.创建 Scanner 对象,new创建一个对象。
3.接受用户的输入,使用相关的函数。
import java.util.Scanner;public class input{public static void main(String [] args){Scanner scanner = new Scanner (System.in);System.out.println("请输入名字:");String name = scanner.next();System.out.println("我的名字是:"+ name);}}
3.位运算
1.二进制以0b或0B开头,八进制以0开头,十六进制以0x或0X开头。
2.位运算符:按位与&,按位或|,按位异或^,按位取反~,算术右移 >>,算术左移<>>,没有<<<符号。
算术右移:低位溢出,符号位不变,并用符号位溢出补高位,本质是/2。
算术左移:符号位不变,低位补0,本质是*2。
逻辑右移:低位溢出,高位补0。
4.控制结构
1.switch(表达式)中表达式的返回值数据类型必须是:byte,short,int,char,enum,String
2.break是退出所有循环,continue是退出当前循环,return是跳出所在方法。
5.类和对象
1.Java内存的结构分析
栈:一般存储基本数据类型(局部变量)
堆:存放对象
方法区:常量池(常量,比如字符串),类的加载信息
2.方法的传参机制
基本数据类型的传参机制:传递的是值(值拷贝),形参的改变不会影响实参。
引用数据类型的传参机制:引用类型传递的是地址(传递也是值,但值是地址),可以通过形参改变实参!
注意:当在方法中出现 p = null 和 p = new Person (); 这时实参并不会发生变化。
原因如下:
方法在调用时会在栈中另外开辟一段独立的空间,p=null只是改变了在它独立空间内的数据,并没有改变main空间内的和堆区对象的数据。而 p = new Person()是在堆区又新建了一个对象并指向它,所以接下来的改变都是改变的新建的那个对象里的数据。