赞
踩
目录
8.switch能否作用在byte,long,string上?
10.Math.round(11.5)等于多少?Math.round(-11.5)多少?
13.访问修饰符 public,private,protected,默认 的区别
52. String str = "i" 与 String str = new String("i")一样吗?
54. 使用HashMap时,用String做key有什么好处?
55. String和StringBuffer,StringBuilder区别?为什么String不可变?
jdk包含jre,jre包含jvm
定义:Java是强类型语言,对于每一种数据类型都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
3. 引用本类的构造函数
- class Person{
- private String name;
- private int age;
- public Person() {}
- public Person(String name) {
- this.name = name;}
-
- public Person(String name, int age) {
- this(name);
- this.age = age;}
- }
- class Person{
- protected String name;
- public Person(String name) {
- this.name = name;
- }
- }
- class Student extends Person{
- private String name;
- public Student(String name, String name1) {
- super(name);
- this.name = name1;
- }
- public void getInfo(){
- System.out.println(this.name); //Child
- System.out.println(super.name); //Father
- }
- }
- public class Test {
- public static void main(String[] args) {
- Student s1 = new Student("Father","Child");
- s1.getInfo();
- }
- }
- public static void main(String[] args) {
- ok:
- for (int i = 0; i < 10; i++) {
- for (int j = 0; j < 10; j++) {
- System.out.println("i=" + i + ",j=" + j);
- if (j == 5) {
- break ok;
- }
- }
- }
- }
多态的实现:
相同点:
不同点:
参数 | 抽象类 | 接口 |
声明 | 抽象类是用abstract关键字声明 | 接口使用interface关键字声明 |
实现 | 子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现 | 子类用implement关键字实现接口.它需要提供接口中所有声明的方法的实现 |
构造器 | 抽象类可以有构造器 | 接口不能有构造器 |
访问修饰符 | 抽象类中的方法可以是任意访问修饰符 | 接口方法默认修饰符是public,并且不允许定义为private或者protected |
多继承 | 一个类最多继承一个抽象类 | 一个类可以实现多个接口 |
字段声明 | 抽象类的字段声明是可以任意的 | 接口字段默认static和final的 |
备注:Java8中接口引入默认方法和静态方法,以来减少抽象类和接口之间的差异.
成员变量和局部变量的区别:
静态变量是被所有的对象共享的,在内存中只有一个副本,仅在类初次加载才被初始化; 非静态变量是对象拥有的,创建对象时被初始化,存在多个副本;静态成员变量初始化的顺序是按照定义的顺序进行初始化
Java中将一个类定义放在另一个类内部,这就是内部类;内部类分为:匿名内部类,静态内部类,局部内部类,成员内部类
优点
应用场景
构造器不能被继承,因此不能被重写,可以被重载
对象的相等比的是内存中存放的内容是否相等,而引用相等,比较的是他们指向的内存地址是否相等
刚开始的时候 JavaAPI 所必需的包是 java 开头的包,javax 当时只是扩展 API 包来说使用。然而随 着时间的推移,javax 逐渐的扩展成为 Java API 的组成部分。但是,将扩展从 javax 包移动到 java 包将是太麻烦了,最终会破坏一堆现有的代码。因此,最终决定 javax 包将成为标准API的一部 分。实际上java和javax没有区别
1. 通过new对象实现反射机制
2. 通过路径实现反射机制
3. 通过类名实现反射机制
String相关
字符串常量池在堆内存中,专门用来存储字符串常量,可以提高内存的使用率,避免开辟多块空间存储相同的字符串,在创建字符串时JVM会首先检查字符串常量池,如果该字符串已经存在池中,则返回它的引用,如果不存在,则实例化一个字符串放到池中,并返回其引用
不一样,内存分配方式不同,前者Java虚拟机会将其分配到常量池中,而后者会被分配到堆内存
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。
HashMap内部实现是通过key的hashcode来确定value的存储位置,因为字符串是不可变的,所以当创建字符串时,它的hashcode被缓存下来,不需要再次计算,所以相比于其他对象更加快.
可变性
线程安全性
性能
int的包装类就是integer,java5开始引入了自动装箱/拆箱,二者可以互相转换
int初始值0,integer初始值null
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。