java知识整理——基础知识

1.jdkjre有什么区

  JDK:Java Development Kit。java开发工具包。它是Java开发运行环境,面向Java程序的开发者。

  JRE:Java Runtime Environment。是Java运行环境,包含了java虚拟机,java基础类库。如果不需要开发只需要运行Java程序,那么可以只安装JRE。面向Java程序的使用者。

  JDK包含了JRE。同时还包含了编译java源码的编译器javac,很多工具软件,java程序编写所需的文档和demo例子程序。

  JRE中包含虚拟机JVM

2.Java三大特性

1.多态  体现在重写,重载,向上转型,运行时绑定

2.继承  子类继承父类,继承属性,方法,实现代码复用

3.封装  属性私有化,方法公开化

3.两个象的 hashCode()相同, equals()也一定 true对吗

  两个对象equals相等,则它们的hashcode必须相等,反之则不一定。

  两个对象==相等,则其hashcode一定相等,反之不一定成立。

4.final java 中有什么作用?

  1)修饰类:表示该类不能被继承;

  (2)修饰方法:表示方法不能被重写;

  (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

    当final修饰的是一个基本数据类型数据时, 这个数据的值在初始化后将不能被改变。

    当final修饰的是一个引用类型数据时, 也就是修饰一个对象时, 引用在初始化后将永远指向一个内存地址, 不可修改.但是该内存地址中保存的对象信息, 是可以进行修改的。

5.java 中的 Math.round(-1.5) 等于多少?

    Math.round(-1.5)的返回值是-1。四舍五入的原理是在参数上加0.5然后做向下取整

    Math.round(3.16):3

    Math.round(3.50):4

    Math.round(3.6):4

    Math.round(-4.5):-4

    Math.round(-4.499):-4

    Math.round(-4.6):-5

6.八大基的数据型是什么?

    byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

    short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

     int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

     long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

     float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

     double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

     boolean:只有true和false两个取值。

     char:16位,存储Unicode码,用单引号赋值。

7. Java中操作字符串都有哪些类,有什么区别

    String

    StringBuffer

    StringBuilder

1.这三个类存储的本质都是一个char类型数组.不同的是String类型的数组长度是3,而另外两个数组的长度都是19且默认值为0

3.这三个类都是以char[]的形式保存的字符串

3.String类型的字符串是不可变的,对String类型的字符串做修改操作都是相当于重新创建对象

4.StringBuffer和StringBuilder进行增删操作都是对同一个对象做操作.

5.StringBuffer中的方法大部分都使用synchronized关键字修饰,线程安全

6.StringBuilder中的方法没有synchronized,线程不安全,性能更高

7.在单线程环境下使用StringBuilder,多线程环境下使用StringBuffer.如果使用的这个字符串几乎不做修改操作,使用String。因为不调用new关键字声明String类型的变量的话它不会在堆内存中创建对象,直接指向String的常量池,并且可以复用.效率更高.

8.String str="i" String str=new String(i)样吗

  不一样。

  String str="i";

  这句话的意思是把“i”这个值在内存中的地址赋给str,如果再有String str3="i";那么这句话的操作也是把“i”这个值在内存中的地址赋给str3,这两个引用的是同一个地址值,他们两个共享同一个内存。

  而String str2 = new String("i");

  这句话是将new String("i");的对象地址赋给str2,需要注意的是这句话是新创建了一个对象。如果再有String str4= new String("i");那么相当于又创建了一个新的对象,然后将对象的地址值赋给str4,虽然str2的值和str4的值是相同的,但是他们依然不是同一个对象了。

9.如何将字符串反

   StringBuffer sBuffer = new StringBuffer("ad1289323bb");

   StringBuffer newBuffer = sBuffer.reverse();

10.String 类的常用方法都有那些?

     equals:字符串是否相同

    equalsIgnoreCase:忽略大小写后字符串是否相同

    compareTo:根据字符串中每个字符的Unicode编码进行比较

    compareToIgnoreCase:根据字符串中每个字符的Unicode编码进行忽略大小写比较

    indexOf:目标字符或字符串在源字符串中位置下标

    lastIndexOf:目标字符或字符串在源字符串中最后一次出现的位置下标

    valueOf:其他类型转字符串

    charAt:获取指定下标位置的字符

    codePointAt:指定下标的字符的Unicode编码

    concat:追加字符串到当前字符串

    isEmpty:字符串长度是否为0

    contains:是否包含目标字符串

    startsWith:是否以目标字符串开头

    endsWith:是否以目标字符串结束

    format:格式化字符串

    getBytes:获取字符串的字节数组

    getChars:获取字符串的指定长度字符数组

    toCharArray:获取字符串的字符数组

    join:以某字符串,连接某字符串数组

    length:字符串字符数

    matches:字符串是否匹配正则表达式

    replace:字符串替换

    replaceAll:带正则字符串替换

    replaceFirst:替换第一个出现的目标字符串

    split:以某正则表达式分割字符串

    substring:截取字符串

    toLowerCase:字符串转小写

    toUpperCase:字符串转大写

    trim:去字符串首尾空格

11.抽象类必要有抽象方法

  抽象类不一定有抽象方法;但是有抽象方法的类一定是抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法)

  java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

12.普通类和抽象类有哪些区别?

    1.普通类中不可含有抽象方法,可以被实例化;普通类不能包含抽象方法,抽象类可以包含抽象方法

    2. 抽象类,则抽象类中所有的方法自动被认为是抽象方法,没有实现过程,不可被实例化;抽象类的子类,除非也是抽象类,否则必须实现该抽象类声明的方法

13.抽象类能使用 final 饰吗

    抽象类就是要子类继承然后实现内部方法的。但是final修饰的类是不能再被继承和修改的。所以不能用final修饰。

14.接口和抽象类有什么区别

实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。

构造函数:抽象类可以有构造函数;接口不能有。

main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。

实现数量:类可以实现很多个接口;但是只能继承一个抽象类。

访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

15. java IO 流分几种?

按流向分类:

输入流

输出流

按处理数据不同分类:

字节流:二进制,可以处理一切文件,包括:纯文本、doc、音频、视频等。

字符流:文本文件,只能处理纯文本。

按功能不同分类:

节点流:包裹源头。

处理流:增强功能,提高性能。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

按操作方式分类:

按操作对象分类:

16.BIONIOAIO 有什么区别?

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

17.== equals 的区是什么?

  == 等于比较运算符,如果进行比较的两个操作数都是数值类型,即使他们的数据类型不相同,只要他们的值相等,也都将返回true.如果两个操作数都是引用类型,那么==比较的是两个变量的内存地址。

  equals()方法是Object类的方法,在Object类中的equals()方法体内实际上返回的就是使用==进行比较的结果。但是equals()可以被重写。

String类比较特殊。因为它创建爱你的对象实在常量池中。一个常量只会有一个地址,所以用==比较也是可以的。

18.&  && 的区是什么?

1.都是逻辑与,左右两边同时满足可返回true

2.&&:短路与。既&& 左边条件不满足,不会判断右边条件。而& 无论左边条件是否满足,都不会判断右边条件。

3.&可用于位运算。左右两边的条件不是布尔类型而是数字时,会进行位运算。 例如:2 & 3 这就会进行位运算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值