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");
  }
} 
目录
相关文章
|
3月前
|
JSON Java API
【干货满满】分享京东API接口到手价,用Java语言实现
本示例使用 Java 调用京东开放平台商品价格及优惠信息 API,通过商品详情和促销接口获取到手价(含优惠券、满减等),包含签名生成、HTTP 请求及响应解析逻辑,适用于比价工具、电商系统集成等场景。
|
2月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
1月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
229 18
|
1月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
93 4
|
2月前
|
存储 Java Apache
Java语言操作INI配置文件策略
以上步骤展示了基本策略,在实际项目中可能需要根据具体需求进行调整优化。例如,在多线程环境中操作同一份配置时需要考虑线程安全问题;大型项目可能还需考虑性能问题等等。
170 15
|
2月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
3月前
|
算法 Java
Java语言实现链表反转的方法
这种反转方法不需要使用额外的存储空间,因此空间复杂度为,它只需要遍历一次链表,所以时间复杂度为,其中为链表的长度。这使得这种反转链表的方法既高效又实用。
382 0
|
3月前
|
JSON Java API
【干货满满】分享拼多多API接口到手价,用Java语言实现
本方案基于 Java 实现调用拼多多开放平台商品详情 API,通过联盟接口获取商品到手价(含拼团折扣与优惠券),包含签名生成、HTTP 请求及响应解析逻辑,适用于电商比价、导购系统集成。
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?