复习

Java 语法基础

变量,数据类型,运算符,流程控制语句,数组,方法

变量

命名规则(命名规范)

  1. 关键字,保留字,字面量 不能作为命令

常见题目

选择合法的变量名
A.$123 B.年龄 C.goto D._const E.test
答案: A B D E

基本数据类型(2进制理解!)

  1. 整数4种

    byte 和 short 实际是int,按照int计算

  2. 浮点数2种

  3. 字符类型
  4. boolean 占用1字节 true false

经典面试题目:

一个包含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]);
}

运算符

数学运算

  1. 整除问题 5/2 结果是 2
  2. 溢出问题
  3. 复合赋值运算的强制类型转换现象

    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;
    
  4. ++ 的经典面试题

    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之间的整数,统计每个数字出现的次数

数组:

  1. 数组是对象,数组变量是引用变量
  2. 数组初始化以后,元素默认值是“零”
  3. 数组的扩容!ArrayList StringBuilder 底层都有数组扩容现象.

经典面试题目:

数组和ArrayList区别?
答:1 数组只提供了数据存储,没有算法
    2. ArrayList内部封装存储数据的数组,以及相关的操作算法。add delete set get
    3. 利用数组实现的专用优化算法性能最好!

面向对象

面向对象基本语法

  1. 面向对象3大基本特征: 封装,继承,多态
  2. 重写和重载

经典面试题: 不能继承的方法没有重写!

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中方法参数只有一种传递方式: 按照值传递

变量的值是什么:

  1. 基本类型变量的值是其直接存储的数值
  2. 引用类型变量的值是其引用对象的地址值,如果不引用对象值是 null。

案例:

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");
    }
}

原理: