变量,数据类型,运算符,流程控制语句,数组,方法
命名规则(命名规范)
常见题目
选择合法的变量名
A.$123 B.年龄 C.goto D._const E.test
答案: A B D E
基本数据类型(2进制理解!)
整数4种
byte 和 short 实际是int,按照int计算
浮点数2种
经典面试题目:
一个包含a~z的字符串,长度不限,统计其中a~z每个字符出现的数量。
答案:
String str = "abdewshaerjafdsghuqerbasdj";
int[] n = new int[26];
//0 1 2~ 25
//'a' 'b' c ~ z
//97 98 99
for(int i=0; i<str.length(); i++){
n[str.charAt(i)-'a']++;
}
for(int i=0; i<n.length; i++){
System.out.println((char)(i+'a')+":"
+ n[i]);
}
数学运算
复合赋值运算的强制类型转换现象
int n = 5;
//n = n + 1.6; 编程错误
n = (int)(n + 1.6);
n += 1.6;
byte b = 5;
//b = b + b; 编程错误
b = (byte)(b + b);
b += b;
++ 的经典面试题
int i = 5;
i=i++;
println(i);//5
关键点:等号是优先级最低的计算,一定在最后计算,i++先执行(取当前i值5作为表达式整体i++的值5,然后i增加1,i为6)再执行赋值运算(将i++的整体5赋值给i,i从6变成5)
数组案例:
有一个整数数组,元素是0~9之间的整数,统计每个数字出现的次数
数组:
经典面试题目:
数组和ArrayList区别?
答:1 数组只提供了数据存储,没有算法
2. ArrayList内部封装存储数据的数组,以及相关的操作算法。add delete set get
3. 利用数组实现的专用优化算法性能最好!
经典面试题: 不能继承的方法没有重写!
public class Super {
public static void main(String[] args) {
Super s = new Sub();
s.test();
}
private void test(){
System.out.println("Super test()");
}
}
class Sub extends Super{
public void test(){
System.out.println("Sub test()");
}
}
访问修饰词一定被考。
Java中方法参数只有一种传递方式: 按照值传递
变量的值是什么:
案例:
public class Demo05 {
public static void main(String[] args) {
int i = 5;
String s = "5";
StringBuilder ss = new StringBuilder("5");
int[] ary = {5};
test(i, s, ary,ss);
System.out.println(i);
System.out.println(s);
System.out.println(ary[0]);
System.out.println(ss);
}
public static void test(int i, String s,
int[] ary, StringBuilder ss){
i++;
s+="6";
ary[0]++;
ss.append("6");
}
}
原理: