变量及常量问题
1. 变量
变量主要分为局部变量、实例变量和类变量
-
局部变量
在方法内部定义,必须声明和初始化值,且作用域只在这个方法中才有效。
-
实例变量
从属于对象,如果不自行初始化,这个类型的默认值为0或者0.0,布尔值默认为false,char类型默认为空。除了基本类型,其余默认值均为null。
public class Demo { //实例变量 char c; String name; public static void main(String[] args) { Demo hw=new Demo(); System.out.println(hw.c); System.out.println(hw.name); //null } }
-
类变量
类变量的基本标志位static,与实例对象可以对比,它不需要先声明一个对象即可直接使用
public class Demo { //类变量 static int c=1; public static void main(String[] args) { System.out.println(c); } }
2. 常量
初始化后不能再改变值
final 常量名=值;
final double PI = 3.14;
其中final为修饰符,不存在先后顺序,即static final和final static性质是一样的,并且常量名一般使用大写字符。
3. 变量的命名规范
-
所有变量、方法、类名做到见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man、GoodMan
-
方法名:首字母小写和驼峰原则:run()、runRun()
运算符
-
位运算
常用的位运算符有:&,|,^,~,<<,>>
eg : A=0011 1100
B=0000 1101 计算下列式子:
A&B=0000 1100
A|B=0011 1101
A^B=0011 0001 (异或)
~B=1111 0010
对于左移<<、右移>>符号常见的面试问题是:
如何加快对2*8计算的速度?
public class Demo { public static void main(String[] args) { System.out.println(2<<3); } }
2<<3:相当于对0000 0010向左移动三位变为0001 0000
即<<代表*2,>>代表/2
-
字符串连接符 ”+“
对于字符串连接符也是面试中常会考察的基本问题,在输出时会有不小的坑存在!
示例:
public class Demo { public static void main(String[] args) { int a=10; int b=20; System.out.println(a+b+""); //30 System.out.println(""+a+b); //1020 System.out.println(a+b+""+a+b); //301020 } }
总结:字符串前的会计算后输出,字符串后的不会计算,直接按序输出。如果想让字符串后的也计算后输出,可以添加括号
Scanner类
创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
scanner.close();
注:凡是IO流的类使用后一定要关闭,否则会持续占用资源!
类中需要区分的方法:
-
next()
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动过滤
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
- next()不能得到带有空格的字符串
-
nextLine()
- 以Enter为结束符,nextLine()方法返回的时输入回车之前的所有字符
- 可以获得带有空格的字符串
-
hasNextDouble()
此方法可用于检查下一个输入是否为数字,整数和小数均符合