J A V A 一

啥也不会,看看记记写写吧(非原创,来自-->javaguide)

1、java语言的特点:(生态强大)

(1)支持 封装、继承、多态

(2)网络编程

(3)支持多线程

(4)平台无关性:Java虚拟机支持平台无关性

------------------------------------------------------------------------------------------------------------ 

2、JRE是java运行时环境,仅包含 Java 应用程序的运行时环境和必要的类库;

JDK包含JRE,同时还包括了 javac、javadoc、jdb、jconsole、javap 等工具,可以用于 Java 应用程序的开发和调试。

------------------------------------------------------------------------------------------------------------ 

3、 Java 程序从源代码到运行的过程如下图所示

.class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(Just in Time Compilation) 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言

4、高级编程语言按照程序的执行方式分为两种:

(1)编译型语言:会将代码一次性编译好,执行速度快,但开发效率低。C、C++...

编译型语言open in new window 会通过编译器open in new window将源代码一次性翻译成可被该平台执行的机器码。一般情况下,编译语言的执行速度比较快,开发效率比较低。常见的编译性语言有 C、C++、Go、Rust 等等】

(2)解释型语言:将代码一句一句的解释成机器能理解的语言,执行速度稍慢,但开发效率高。Java、Python....

解释型语言open in new window会通过解释器open in new window一句一句的将代码解释(interpret)为机器代码后再执行。解释型语言开发效率比较快,执行速度比较慢。常见的解释性语言有 Python、JavaScript、PHP 等等】

5、Java和C++的区别:

(1)java不支持使用指针直接访问内存,更加安全;

(2)java的类是单继承,不支持多继承(接口支持)。C++支持多继承;

(3)java只支持方法重载,不支持操作符重载;

(4)java有内存回收机制(自动内存管理垃圾回收机制(GC)),无需手动处理。

6、Java中基本数据类型:

Java 中有 8 种基本数据类型,分别为:

  • 6 种数字类型:
    • 4 种整数型:byteshortintlong
    • 2 种浮点型:floatdouble
  • 1 种字符类型:char
  • 1 种布尔型:boolean

7、Java中基本数据类型和包装类型的区别:

上述八种基本类型都有对应的包装类分别为:ByteShortIntegerLongFloatDoubleCharacterBoolean

(1)定义常量和局部变量时使用基本数据类型,在方法参数和对象成员时,基本使用包装类型。且泛型不支持基本数据类型;

(2)基本数据类型的局部变量一般放在Java虚拟机中的局部变量表中;

         基本数据类型的成员变量(未被static修饰)存放在Java虚拟机的中;

         包装类型属于对象类型,几乎所有的对象实例都存在于堆中。

(3)“ = =” :基本数据类型比较的是值,包装类型比较的是内存地址;包装对象值的比较方式“equals()”。所有整型包装类对象之间值的比较,全部使用 equals 方法比较

8、包装类型的缓存机制:

Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or False

如果超出对应范围仍然会去创建新的对象,缓存的范围区间的大小只是在性能和资源之间的权衡。

两种浮点数类型的包装类 Float,Double 并没有实现缓存机制。

Integer i1 = 40;
Integer i2 = new Integer(40);
System.out.println(i1==i2);

Integer i1=40 这一行代码会发生装箱,等价于 Integer i1=Integer.valueOf(40)

因此,i1 直接使用的是缓存中的对象

Integer i2 = new Integer(40)直接创建新的对象

9、自动装箱与拆箱:

什么是自动拆装箱?

  • 装箱:将基本类型用它们对应的引用类型包装起来;
  • 拆箱:将包装类型转换为基本数据类型;

举例:

Integer i = 10;  //装箱
int n = i;   //拆箱

注意:如果频繁拆装箱的话,也会严重影响系统的性能。我们应该尽量避免不必要的拆装箱操作。

private static long sum() {
    // 应该使用 long 而不是 Long
    Long sum = 0L;
    for (long i = 0; i <= Integer.MAX_VALUE; i++)
        sum += i;
    return sum;
}

10、成员变量和局部变量的区别:

(1)成员变量一般作用于类中;局部变量一遍在方法或代码块中

(2)成员变量的生命周期跟该成员变量的对象的生命周期相同;局部变量存在于该方法开始执行到执行结束的中间过程

(3)成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;

但是,成员变量和局部变量都能被 final 所修饰。

11、静态变量作用:

static关键字修饰的变量。它可以被类的所有实例共享,一个类创造的所有对象都是共享的一份静态变量。就是说,静态变量只会被分配一次内存。访问方式:类名.静态变量名。

12、字符型常量和字符串常量的区别?

字符型常量:单引号‘’;字符串“”。

13、静态方法为什么不能调用非静态成员?

(1)静态方法是属于类的,在类加载的时候就会分配内存,通过类名即可访问;

而非静态成员属于实例对象,只有咋对象实例化后才存在,需要通过类的对象去访问;

(2)静态方法存在时,非静态成员不存在,无法调用。

14、重载和重写?

(1)重载:调用方法时会根据参数的不同调用同名的不同函数。同一个方法(函数名相同)根据不同的输入数据,做出不同的处理;

发生在同一个类中(或者父类和子类之间),方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同。

(2)重写:当子类继承自父类的相同方法,输入数据相同,但要做出有别于父类的相应,区覆盖父类的方法。

重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写。方法名、参数列表必须相同,子类方法返回值类型应比父类方法返回值类型更小或相等,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。

大脑饱和~-_-~,今天算是小小收获,还跑出了一个对比实验的代码(花了2days)*——*,放学。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值