珠海pc网站建设,衡水网站建设培训学校,企业为什么做网站 图片,东莞网站建设建网站系列文章目录
Java基础知识题(一)
文章目录
系列文章目录
前言
1. Java中的 组合、聚合和关联有什么区别#xff1f;
2. 解释为什么Java被称作是“平台无关的编程语言”#xff1f;
3. 简述什么是值传递和引用传递#xff1f;重点
4. 详细阐述Java进程和线程的区别 …系列文章目录
Java基础知识题(一)
文章目录
系列文章目录
前言
1. Java中的 组合、聚合和关联有什么区别
2. 解释为什么Java被称作是“平台无关的编程语言”
3. 简述什么是值传递和引用传递重点
4. 详细阐述Java进程和线程的区别 重点
5. Java语言创建线程有几种不同的方式重点
6. 概括的解释下Java线程的几种可用状态重点
7. 简述Java同步方法和同步代码块的区别 重点
8. 为何使用同步
二 Java校招题型
1. Java语言写成 public static void写成static public void会如何
2. Java怎么判断数组是null还是为空?
3. 请计算 math.round(11.5)等于多少?math.round(-11.5)等于多少?
4. 写Java方法实现字符串的替换如输入bbbwlirbbb输出bbbhhtccc ?
总结 前言
本文主要讲解Java的基础知识
1. Java中的 组合、聚合和关联有什么区别 如果两个对象彼此有关系就说他们是彼此相关联的。组合和聚合是面向对象中的两种形式的关联。组合是一种比聚合更强力的关联。组合中一个对象是另一个的拥有者而聚合则是指一个对象使用另一个对象。如果对象 A 是由对象 B 组合的则 A 不存在的话B一定不存在但是如果 A 对象聚合了一个对象 B则即使 A 不存在了B 也可以单独存在。 2. 解释为什么Java被称作是“平台无关的编程语言” Java虚拟机是一个可以执行Java字节码的虚拟机进程,Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能因为它知道底层硬件平台的指令长度和其他特性。 跨平台原理: 不同的操作系统,有自己专门识别的软件格式.比如Windows系统只识别.exe的.编写的Java程序就没有办法直接在Window当中运行.如果只编写一个Java程序是无法办法在各个系统上运行. Java单独开发了一套(各个平台)一个Java虚拟机的程序编写的Java程序不需要运行在系统当中,而是运行在系统安装的Java虚拟机当中.各个平台上的Java虚拟机都能识别编写的Java程序. 在每一个平台当中,都安装了一个JVM软件. 我们编写的Java程序全部都运行在JVM软件当中,这样就可以办到写一份程序在各个平台都可以直接运行啦! 3. 简述什么是值传递和引用传递重点 1.值传递方法调用时实际参数把它的值传递给对应的形式参数方法执行中形式参数值的改变不影响实际参 数的值。 2.引用传递也称为传地址。方法调用时实际参数的引用(地址而不是参数的值)被传递给方法中相对应的形式参数在方法执行中对形式参数的操作实际上就是对实际参数的操作方法执行中形式参数值的改变将会影响实际参数的值。 4. 详细阐述Java进程和线程的区别 重点 进程指在系统中正在运行的一个应用程序程序一旦运行就是进程或者更专业化来说进程是指程序执行时的一个实例即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看进程的目的就是担当分配系统资源CPU时间、内存等的基本单位。 线程系统分配处理器时间资源的基本单元或者说进程之内独立执行的一个单元执行流。进程——资源分配的最小单位线程——程序执行的最小单位。 线程进程的区别体现在4个方面 1、因为进程拥有独立的堆栈空间和数据段所以每当启动一个新的进程必须分配给它独立的地址空间建立众多的数据表来维护它的代码段、堆栈段和数据段这对于多进程来说十分“奢侈”系统开销比较大而线程不一样线程拥有独立的堆栈空间但是共享数据段它们彼此之间使用相同的地址空间共享大部分数据比进程更节俭开销比较小切换速度也比进程快效率高但是正由于进程之间独立的特点使得进程安全性比较高也因为进程有独立的地址空间一个进程崩溃后在保护模式下不会对其它进程产生影响而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。 2、体现在通信机制上面正因为进程之间互不干扰相互独立进程的通信机制相对很复杂譬如管道信号消息队列共享内存套接字等通信机制而线程由于共享数据段所以通信机制很方便。 3、体现在CPU系统上面线程使得CPU系统更加有效因为操作系统会保证当线程数不大于CPU数目时不同的线程运行于不同的CPU上。 4、体现在程序结构上举一个简明易懂的列子当我们使用进程的时候我们不自主的使用if else嵌套来判断pid使得程序结构繁琐但是当我们使用线程的时候基本上可以甩掉它当然程序内部执行功能单元需要使用的时候还是要使用所以线程对程序结构的改善有很大帮助。 5. Java语言创建线程有几种不同的方式重点 有三种方式可以用来创建线程 1 继承Thread类 2 实现Runnable接口 3 应用程序可以使用Executor框架来创建线程池 实现Runnable接口这种方式更受欢迎因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下这需要多继承而Java不支持多继承只能实现接口。同时线程池也是非常高效的很容易实现和使用。 6. 概括的解释下Java线程的几种可用状态重点 线程在执行过程中可以处于下面几种状态 1 就绪(Runnable):线程准备运行不一定立马就能开始执行。 2 运行中(Running)进程正在执行线程的代码。 3 等待中(Waiting):线程处于阻塞的状态等待外部的处理结束。 4 睡眠中(Sleeping)线程被强制睡眠。 5 I/O阻塞(Blocked on I/O)等待I/O操作完成。 6 同步阻塞(Blocked on Synchronization)等待获取锁。 7 死亡(Dead)线程完成了执行。 7. 简述Java同步方法和同步代码块的区别 重点 区别 同步方法默认用this或者当前类class对象作为锁 同步代码块可以选择以什么来加锁比同步方法要更细颗粒度我们可以选择只同步会发生同步问题的部分代码而不是整个方法 同步方法使用关键字 synchronized修饰方法而同步代码块主要是修饰需要进行同步的代码用 synchronizedobject{代码内容}进行修饰 8. 为何使用同步 java允许多线程并发控制当多个线程同时操作一个可共享的资源变量时增删改查将会导致数据的不准确相互之间产生冲突。类似于在atm取钱银行数据确没有变这是不行的要存在于一个事务中。因此加入了同步锁以避免在该线程没有结束前调用其他线程。从而保证了变量的唯一性准确性。 1.同步方法 即有synchronized (同步美 [sɪŋkrənaɪzd] ) 修饰符修饰的方法。 由于java的每个对象都有一个内置锁当用此关键字修饰方法时内置锁会保护整个方法。在调用给方法前要获取内置锁否则处于阻塞状态。 例public synchronized getMoney(){} 注synchronized修饰静态方法如果调用该静态方法将锁住整个类。 2.同步代码块 即有synchronized修饰符修饰的语句块被该关键词修饰的语句块将加上内置锁。实现同步。 例synchronized(Object o ){} 同步是高开销的操作因此尽量减少同步的内容。通常没有必要同步整个方法同步部分代码块即可。 同步方法默认用this或者当前类class对象作为锁。 同步代码块可以选择以什么来加锁比同步方法要更颗粒化我们可以选择只同步会发生问题的部分代码而不是整个方法 二 Java校招题型
1. Java语言写成 public static void写成static public void会如何 程序正常编译及运行 将public和static修饰符的位置进行调换即将public static写成static public并不会改变方法的功能或含义。这是因为修饰符的顺序并不影响方法的定义和执行。无论是public static void还是static public void都表示该方法是一个公共的静态方法可以被其他类直接调用且无需创建类的实例。所以两种写法是等效的。 2. Java怎么判断数组是null还是为空? 在Java中我们经常需要判断一个数组是否为空。一个空数组指的是没有任何元素的数组即数组的长度为0。本篇文章将介绍如何使用Java语言来判断数组是否为空。 流程
下面我们将介绍判断数组是否为空的流程可以使用以下表格展示步骤 步骤 描述 1. 声明一个数组变量 2. 使用条件语句判断数组是否为null 3. 使用数组的length属性判断数组的长度是否为0 代码实现 步骤1声明一个数组变量 首先我们需要声明一个数组变量。你可以使用以下代码示例来声明一个整型数组 int[] array; 步骤2使用条件语句判断数组是否为null 在Java中我们可以使用条件语句判断一个数组是否为null。如果数组为null那么它一定是空数组。你可以使用以下代码示例来判断数组是否为null if (array null) { System.out.println(数组为空); } 步骤3使用数组的length属性判断数组的长度是否为0 如果数组不为null我们还需要进一步判断它的长度是否为0。数组的长度可以通过数组的length属性获取。你可以使用以下代码示例来判断数组的长度是否为0 if (array ! null array.length 0) { System.out.println(数组为空); } 完整代码示例
下面是一个完整的示例代码展示如何判断一个数组是否为空
public class ArrayEmptyCheck {
public static void main(String[] args) {
int[] array new int[0];
if (array null) {
System.out.println(数组为空);
} else if (array.length 0) {
System.out.println(数组为空);
} else {
System.out.println(数组不为空);
}
}
}
在上面的示例中我们首先声明了一个长度为0的整型数组。然后我们使用条件语句判断数组是否为null如果是null则打印数组为空。接着我们使用数组的length属性判断数组的长度是否为0如果是0则打印数组为空。如果数组不为null且长度不为0则打印数组不为空。
3. 请计算 math.round(11.5)等于多少?math.round(-11.5)等于多少?
代码实现思路如下
Math.round()对数字进行四舍五入
Math.round(11.5)12
Math.round(-11.5)11
4. 写Java方法实现字符串的替换如输入bbbwlirbbb输出bbbhhtccc ?
代码实现思路如下
String sbbbwlirbbb;
s.replaceAll(wlirbbb,hhtccc);
总结
以上就是今天的内容~
欢迎大家点赞收藏⭐转发 如有问题、建议请您在评论区留言哦。
最后转载请注明出处