java语言概述练习题及面试题

简介: java语言概述练习题及面试题

总结


1.java程序编写-编译-运行的过程

编写:我们将编写的java代码保存在以".java"结尾的源文件中

编译:使用javac.exe命令编译我们的java源文件。格式:javac 源文件名.java

运行:使用java.exe命令解释运行我们的字节码文件。 格式:java 类名


2.在一个java源文件中可以声明多个class。但是,只能最多有一个类声明为public的。 而且要求声明为public的类的类名必须与源文件名相同。


3.程序的入口是main()方法。格式是固定的。


4.输出语句: System.out.println():先输出数据,然后换行 System.out.print():只输出数据


5.每一行执行语句都以";"结束。


6.编译的过程:编译以后,会生成一个或多个字节码文件。字节码文件的文件名与java源文件中的类名相同。


问题:java语言的特点是什么?


面向对象性:两个基本概念:类、对象;三大特性:封装、继承、多态

健壮性:吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制

跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”


问题:System.out.println()和System.out.print()什么区别呢? 以下代码的运行效果是什么?


System.out.println();打印完后,会换行。

System.out.print();打印完后,不会换行。


问题:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?


答:可以。但最多只有一个类名声明为public,与文件名相同。


Something类的文件名叫OtherThing.java
class Something {
public static void main(String[] something_to_do) {
System.out.println(“Do something …”);
}
}

这个很明显。

答案: 正确。从来没有人说过Java的class名字必须和其文件名相同。但public class的名


问题:为什么要设置path(或者说,设置path的目的是什么)?


目的是为了在控制台的任何文件路径下,都可以调用jdk指定目录下的所有指令。


JAVA_HOME = bin的上一层目录

Path = % JAVA_HOME %\bin

JDK,JRE和JVM的关系是什么?

JDK包含JRE,JRE包含JVM.

Jdk = jre + java的开发工具(java.exe , javac.exe , Javadoc.exe)

Jrd = jvm + java的核心类库


问题:源文件名是否必须与类名相同?如果不是,那么什么情况下,必须相同? Public 需要相同


程序中若只有一个public修饰的类,且此类含main方法。那么类名与源文件名可否不一致?


问题:Java的注释方式有哪几种,格式为何?


1.java规范的三种注释方式:

单行注释

多行注释

文档注释(java特有)


2.单行注释和多行注释的作用:

① 对所写的程序进行解释说明,增强可读性。方便自己,方便别人

② 调试所写的代码


3.特点:单行注释和多行注释,注释了的内容不参与编译。

换句话说,编译以后生成的.class结尾的字节码文件中不包含注释掉的信息


4.文档注释的使用:

注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。


5.多行注释不可以嵌套使用


自己使用java文档注释的方式编写程序,并用javadoc命令解析


超纲题目:GC是什么? 为什么要有GC


答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,

忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。


超纲题目:垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收


答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。

当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。


输出:心形


方式一:


class PrintHeart {
  public static void main(String[] args) {
    System.out.print("\t");
    System.out.print("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.println("*");
    System.out.print("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("I love java");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.println("*");
    System.out.print("\t");
    System.out.print("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.println("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.println("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.println("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("*");
    System.out.print("\t");
    System.out.println("*");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("\t");
    System.out.print("    ");
    System.out.print("*");
  }
}


方式二:


class PrintHeart1 {
  public static void main(String[] args) {
    System.out.print("\t" + "*" + "\t\t\t\t\t\t\t\t\t\t\t\t" + "*" + "\t" + "\n");
    System.out.print("*" + "\t\t" + "*" + "\t\t\t\t" + "I love Java" + "\t\t\t\t\t" + "*" + "\t\t" + "*" + "\n");
    System.out.print("\t" + "*" + "\t\t\t\t\t\t\t\t\t\t\t\t" + "*" + "\t" + "\n");
    System.out.print("\t\t" + "*" + "\t\t\t\t\t\t\t\t\t\t" + "*" + "\t\t" + "\n");
    System.out.print("\t\t\t" + "*" + "\t\t\t\t\t\t\t\t" + "*" + "\t" + "\n");
    System.out.print("\t\t\t\t" + "*" + "\t\t\t\t\t\t" + "*" + "" + "\t" + "\n");
    System.out.print("\t\t\t\t\t" + "*" + "\t\t\t\t" + "*" + "" + "\t\t" + "\n");
    System.out.print("\t\t\t\t\t\t" + "*" + "\t\t" + "*" + "" + "\t\t" + "\n");
    System.out.print("\t\t\t\t\t\t\t" + "*" + "\n");
  }
} 
目录
相关文章
|
2天前
|
存储 Java
面试官:素有Java锁王称号的‘StampedLock’你知道吗?我:这什么鬼?
面试官:素有Java锁王称号的‘StampedLock’你知道吗?我:这什么鬼?
42 23
|
4天前
|
网络协议 算法 Java
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
17 3
|
1天前
|
消息中间件 安全 前端开发
字节面试:说说Java中的锁机制?
Java 中的锁(Locking)机制主要是为了解决多线程环境下,对共享资源并发访问时的同步和互斥控制,以确保共享资源的安全访问。 锁的作用主要体现在以下几个方面: 1. **互斥访问**:确保在任何时刻,只有一个线程能够访问特定的资源或执行特定的代码段。这防止了多个线程同时修改同一资源导致的数据不一致问题。 2. **内存可见性**:通过锁的获取和释放,可以确保在锁保护的代码块中对共享变量的修改对其他线程可见。这是因为 Java 内存模型(JMM)规定,对锁的释放会把修改过的共享变量从线程的工作内存刷新到主内存中,而获取锁时会从主内存中读取最新的共享变量值。 3. **保证原子性**:锁
13 1
|
5天前
|
Java
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
18 0
|
5天前
|
安全 Java 程序员
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
11 0
|
7天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
98 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
7天前
|
Java
三个可能的Java面试题
【5月更文挑战第7天】Java垃圾回收机制自动管理内存,回收无引用对象的内存,确保内存有效利用。多态性允许父类引用操作不同子类对象,如Animal引用可调用Dog的方法。异常处理机制通过try-catch块捕获和处理程序异常,例如尝试执行可能导致ArithmeticException的代码,catch块则负责处理异常。
33 9
|
7天前
|
网络协议 Java 数据库连接
Java语言的特点
【5月更文挑战第7天】Java是一种面向对象的编程语言,强调数据和操作的封装,具备平台独立性,能“一次编写,到处运行”。它有自动垃圾收集机制,消除手动内存管理。Java是强类型语言,注重安全性,并支持多线程编程。其丰富的API库和对网络编程的良好支持增强了功能。此外,Java的可扩展性使其能轻松适应新需求和扩展。
21 4
|
7天前
|
分布式计算 Java 大数据
Java语言主要应用领域
【5月更文挑战第7天】Java在嵌入式系统中以低至130KB的占用展现可靠性,实现“一次编写,到处运行”。在大数据领域,Java通过Hadoop、Hbase、Accumulo和ElasticSearch等工具发挥关键作用。Java也是Eclipse、IntelliJ IDEA和NetBeans等开发工具的基础。广泛应用于电商网站和金融服务器系统,即便在J2ME式微后,仍能在部分低端手机中找到其踪影。
18 4
|
8天前
|
安全 Java 编译器
Java第一课——Java详细图文概述
Java第一课——Java详细图文概述
27 6
Java第一课——Java详细图文概述