1. 成员变量VS 局部变量 (1) 在类中位置不同: 成员变量在类中方法之外; 局部变量在方法定义中或在方法声明上; (2) 在内存中位置不同: 成员变量在堆中;局部变量在栈中; (3) 生命周期不同: 成员变量是随着对象的创建而存在,随着对象的消失而消失; 局部变量是随着方法的调用而存在,在方法调用完毕就消失; (4) 初始值不同: 成员变量使用前要声明,可以不赋初始值,因其有默认的初始化值; 局部变量没有默认的初始化值,必须明并赋初始值,然后才能使用; (5) 局部变量名称可以和成员变量名称一致,在方法中使用的时候,采用就近原则; 2. i++ VS ++i (1) a=i++等价于:a=i;i=i+1 (2) a=++i等价于:i=i+1;a=i (3) 例子: public class Test1 { publicstatic void main(String[] args) { inti= 0; for(intj=0;j<5;j++) { inta = i++;// ① // inta = ++i;// ② // i= i++;// ③ // i= ++i;// ④ // ++i;//⑤ i++;//⑥ System.out.println("a="+ a); System.out.println("i="+ i); // System.out.println("j="+ j); System.out.println("-----------------------"); } } } 3. return VS break VS continue a.return: (1) return从当前的方法中退出,返回到调用该方法的语句处,继续往下执行; (2) return返回一个值给该方法的调用端,返回的数据类型必须与方法的声明处的返回类型一致; (3) return后面也可以不带参数,这样就返回空,主要用于中断函数执行,返回函数的调用端; b.break: (1)break在循环体内,强行结束循环的执行,不再判断执行循环的条件是否成立,直接转向循环外面的语句; (2)当break出现在switch语句中时,其作用是跳出该switch语句体; C. continue: 终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断 4. 数组操作的方法: (1) 排序之选择法: file:///C:\Users\PRISCI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.jpg (2) 排序之冒泡法: file:///C:\Users\PRISCI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg (3) 元素插入之顺序法:(注:下面代码中变量”in”表示向数组中插入的整数) file:///C:\Users\PRISCI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image006.jpg (4) 元素插入之倒序法:(注:下面代码中变量”in”表示向数组中插入的整数) file:///C:\Users\PRISCI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image008.jpg 5. 方法中的局部变量为什么必须用final修饰符? 内部类的生命周期和方法中的局部变量是不一样的。内部类也是一个类,存储在堆中。当对该类的引用消失时,内部类才会消亡。而方法中的局部变量是存储在栈中的。当调用结束时就会退栈,即在内存中,这个属性就消失了。也就是说,内部类的生命周期超过了方法中的局部变量的生命周期。内部类可能会调用到已经消失的属性,因此也就无法访问方法中的局部变量。一旦在方法中的局部变量前加上修饰符"final",局部变量就会存储在堆中,生命周期跟工程的生命周期是一样的,此时,内部类就可以访问到方法中的局部变量了。 6. Java中字符'\'的含义 在Java中,'\'代表转义字符,起到标记的作用。它表示'\'后面的第一个字符不是普通的字符,而是被转义的字符。这样在执行代码时,JVM会根据转义之后的含义执行相应的操作。 7. 构造方法: (1)没有返回值,连void也不能出现。 (2)构造方法一般用public修饰,但也可以用private,这是为了避免在类的外面生成对象。 (3)若定义一个类的时候,没有为其定义构造方法,那么java编译器会自动为其添加一个不带参数,且方法体为空的构造方法(即:默认的构造方法) 8. New关键字在生成对象时完成哪些事情? (1) 调用类的构造方法; (2) 为对象开辟内存空间; (3) 将生成的对象的地址返回; 9. 抽象类 VS 接口: (1) 抽象类: (2) 接口: 10. if语句和三元运算符的区别: (1) 用三元运算符实现的,都可以用if语句来实现;反之则不成立; (2)什么时候if语句实现不能用三元改进呢? 当if语句控制的操作是一个输出语句的时候就无法用三元运算符; 因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。 11. Switch语句中可以使用的数据类型: (1)基本数据类型:char,byte,short,int (2)只要能提升为int的都可以; (3)引用数据类型中的枚举(JDK1.5); (4)String(JDK1.7); 12. 选择结构switch语句的注意事项: (1) case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的; (2) default可以省略吗? 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。 (3) break可以省略吗? a.最后一个可以省略,其他最好不要省略; b.会出现一个现象:case穿透; c.最终我们建议不要省略 (4)default一定要在最后吗? 不是,可以在任意位置。但是建议在最后; (5)switch语句的结束条件: a:遇到break就结束了; b:执行到switch的右大括号就结束了; (6) switch语句和if语句的各自使用场景: a. switch建议判断固定值的时候用; b.if建议判断区间或范围的时候用;
|