天天学JAVA-JAVA基础(2)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_15127715/article/details/102751999

如果觉得我写的还行,请关注我的博客并且点个赞哟。本文主要介绍JAVA基础相关问题,通过阅读本文,你将掌握以下10点

1.StringBuffer 、StringBuilder 和 String 的区别是什么?
2.在一个静态方法内调用一个非静态成员为什么是非法的?
3.接口和抽象类的区别是什么?
4.成员变量与局部变量的区别有哪些?
5一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?
6.静态方法和实例方法有何不同?
7.hashCode 介绍?
8.为什么Java中只有值传递?
9.线程有哪些基本状态?
10.一道阿里面试题,你会做吗?

1. StringBuffer 、StringBuilder 和 String 的区别是什么?

字符修改上的区别:
String:不可变字符串;
StringBuffer:可变字符串、效率低、线程安全;
StringBuilder:可变字符序列、效率高、线程不安全;

初始化上的区别:
String可以空赋值,StringBuffer不行,会报错(读者可自行测试)

小结:
(1)如果要操作少量的数据用 String;

(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;

(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder(推荐使用)。

2.在一个静态方法内调用一个非静态成员为什么是非法的?

答案:非法
原因:由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员

3.接口和抽象类的区别是什么?

1.接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
2.接口中除了static、final变量,不能有其他变量,而抽象类中则不一定。
3.一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。
4.接口方法默认修饰符是public,抽象方法可以有public、protected和default这些修饰符(抽象方法就是为了被重写所以不能使用private关键字修饰!)。
5.从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范

4.成员变量与局部变量的区别有哪些?

定义的位置上区别:
1. 成员变量是定义在方法之外,类之内的。
2. 局部变量是定义在方法之内。
作用上的区别:
1. 成员变量的作用是用于描述一类事物的公共 属性的。
2. 局部变量的作用就是提供一个变量给方法内部使用而已。
生命周期区别:
1. 随着对象 的创建而存在,随着对象的消失而消失。
2. 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一旦出了自己的作用域, 那么马上从内存中消失。
初始值的区别:
1. 成员变量是有默认的初始值。
数据类型 默认的初始值
int 0
float 0.0f
double 0.0
boolean false
char ’ ’
String(引用数据类型) null
2. 局部变量是没有默认的初始值的,必须要先初始化才能使用。

5一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?

主要作用是完成对类对象的初始化工作。可以执行。因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。

6.静态方法和实例方法有何不同?

1.在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

2.静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

7.hashCode 介绍?

hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()
定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。
散列表存储的是键值对(key-value),它的特点是:能根据“键”快速的检索出对应的“值”。这其中就利用到了散列码!(可以快速找到所需要的对象)

8.为什么Java中只有值传递?

按值调用(call by value)表示方法接收的是调用者提供的值,而按引用调用(call by
reference)表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。它用来描述各种程序设计语言(不只是Java)中方法参数传递方式。

Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容

9.线程有哪些基本状态?

线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行)状态。可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行) 状态

10.在关系型是数据库中,有两个不同的事务同时操作数据库中同一表的同一行,不会引起冲突的是(阿里面试题)

A.其中一个DELETE操作,一个是SELECT操作
B.其中两个都是UPDATE
C.其中一个是SELECT,一个是UPDATE
D.其中一个SELECT
E.其中一个是DELETE,另一个是UPDATE
F.两个都是DELETE

如果你想知道答案或者你知道答案,请留言或者关注下方 公众号,并且回复1026,将会得到答案和解析哟。

如果你觉得我写的还行,请关注我的博客并且点个赞哟,也请关注我的公众号,每天会定时推送干货.

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_15127715/article/details/102751999
今日推荐