1、什么是Java

  Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了 C++里难以理解的多继承、 指针等概念,因此Java语言具有功能强大和简单易 用两个特征。Java语言作为静态面向对象编程语言的 代表,极好地实现了面向对 象理论,允许程序员以优雅的思维方式进行复杂的编程 

2、JVM、JRE和JDK的关系    

 

  JVM
    Java Virtual Machine 是Java虚拟机,Java程序需要运行在虚拟机上,不同的平 台有自己的虚拟机,因此Java语言可以实现跨平台。
 
  JRE
    Java Runtime Environment 包括Java虚拟机和Java程序所需的核心类库等。核 心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数 据类型、基本数学函数、字符串处理、线程、异 常处理类等,系统缺省加载这个包
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
 
  JDK
    Java Development Kit 是提供给Java开发人员使用的,其中包含了Java的开发 工具,也包括了JRE。所以 安装了JDK,就无需再单独安装JRE了。其中的开发工 具:编译工具(javac.exe),打包工具(jar.exe)等。
 

3、Java语言有哪些特点

  •   简单易学(Java语言的语法与C语言和C++语言很接近);  
  •   面向对象(封装,继承,多态);  
  •   平台无关性(Java虚拟机实现平台无关性);  
  •   支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的);  
  •   支持多线程(多线程机制使应用程序在同一时间并行执行多项任);  
  •   健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等);  
  •   安全性。
 

4、Java 跨平台性的原理是什么

  Java语言设计的一个核心优势在于其“编写一次,到处运行”的能力。这一特性通过Java虚拟机(JVM)得以实现。当开发者用Java编写程序后,源代码被编译成一种称为字节码的中间表示形式,存储在扩展名为.class的文件中。这种字节码是专门为JVM设计的,并不针对任何具体的硬件架构或操作系统。

  JVM充当了软件层面的抽象计算机,在不同平台之间提供了一致的接口。这意味着Java编译器只需生成与JVM兼容的字节码,而无需考虑最终运行程序的具体环境。每个支持Java的平台都有一个特定版本的JVM,它能够读取字节码并将其转换为该平台上原生的机器指令来执行。由于各个平台上的JVM实现了相同的规范,因此它们都能正确地解释和执行同样的字节码,从而确保了Java应用程序的跨平台兼容性。

  此外,现代JVM通常还包含了即时编译器(JIT),它可以将频繁使用的字节码片段编译为直接的机器码,以提高执行效率。这种方式结合了编译型语言的速度优势和解释型语言的灵活性,使得Java程序不仅可以在多种环境中高效运行,而且具有良好的性能表现。总结来说,Java通过引入JVM和字节码机制,巧妙地解决了跨平台编程的问题,同时保持了高性能的潜力。  

  

5、Java和C++的区别

  我也没学过C++,但是面试官就是没事喜欢拿咱们Java和C++比呀! 没办法!!!就算没学过C++,也要记下来!
  •   都是面向对象的语言,都支持封装、继承和多态
  •   Java不提供指针来直接访问内存,程序内存更加安全
  •   Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是 接口可以多继承。
  •   Java有自动内存管理机制,不需要程序员手动释放无用内存。

6、Java语言采用何种编码方案?

  Java语言采用Unicode编码标准,Unicode(标准码),它为每个字符制订了一 个唯一的数值,因此在任何的语言,平台,程序都可以放心的使用。

 
  

【Java 温故而知新系列】基础知识-01 概述的更多相关文章

  1. Java多线程系列 基础篇01 线程的状态

    1.进程和线程 进程: 计算机中程序关于某数据集合的一次运行活动,是计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程: 线程是进程的实例,是CPU进行资源分配和调度的最小单位,线程 ...

  2. Java多线程系列--“基础篇”01之 基本概念

    多线程是Java中不可避免的一个重要主体.从本章开始,我们将展开对多线程的学习.接下来的内容,是对“JDK中新增JUC包”之前的Java多线程内容的讲解,涉及到的内容包括,Object类中的wait( ...

  3. Java多线程系列--“基础篇”11之 生产消费者问题

    概要 本章,会对“生产/消费者问题”进行讨论.涉及到的内容包括:1. 生产/消费者模型2. 生产/消费者实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p ...

  4. Java多线程系列--“基础篇”04之 synchronized关键字

    概要 本章,会对synchronized关键字进行介绍.涉及到的内容包括:1. synchronized原理2. synchronized基本规则3. synchronized方法 和 synchro ...

  5. Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式

    概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程.关于线程 ...

  6. Java多线程系列--“基础篇”03之 Thread中start()和run()的区别

    概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答.本章内容包括:start() 和 run()的区别说明start() 和 run()的区别示例start( ...

  7. Java多线程系列--“基础篇”05之 线程等待与唤醒

    概要 本章,会对线程等待/唤醒方法进行介绍.涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long t ...

  8. Java多线程系列--“基础篇”06之 线程让步

    概要 本章,会对Thread中的线程让步方法yield()进行介绍.涉及到的内容包括:1. yield()介绍2. yield()示例3. yield() 与 wait()的比较 转载请注明出处:ht ...

  9. Java多线程系列--“基础篇”07之 线程休眠

    概要 本章,会对Thread中sleep()方法进行介绍.涉及到的内容包括:1. sleep()介绍2. sleep()示例3. sleep() 与 wait()的比较 转载请注明出处:http:// ...

  10. Java多线程系列--“基础篇”08之 join()

    概要 本章,会对Thread中join()方法进行介绍.涉及到的内容包括:1. join()介绍2. join()源码分析(基于JDK1.7.0_40)3. join()示例 转载请注明出处:http ...

随机推荐

  1. 强化学习算法笔记之【DDPG算法】

    强化学习笔记之[DDPG算法] 目录 强化学习笔记之[DDPG算法] 前言: 原论文伪代码 DDPG 中的四个网络 代码核心更新公式 前言: 本文为强化学习笔记第二篇,第一篇讲的是Q-learning ...

  2. Nuxt.js 应用中的 build:done 事件钩子详解

    title: Nuxt.js 应用中的 build:done 事件钩子详解 date: 2024/10/21 updated: 2024/10/21 author: cmdragon excerpt: ...

  3. PHP mysql 大量批量insert或update数据出错问题

    UPDATE users SET age = 30 WHERE name = 'Alice'; UPDATE users SET age = 25 WHERE name = 'Bob'; UPDATE ...

  4. [离线计算-Spark|Hive] 数据近实时同步数仓方案设计

    背景 最近阅读了大量关于hudi相关文章, 下面结合对Hudi的调研, 设计一套技术方案用于支持 MySQL数据CDC同步至数仓中,避免繁琐的ETL流程,借助Hudi的upsert, delete 能 ...

  5. pyenv: no such command `virtualenv'

    当执行 pyenv virtualenv 3.6.10 env_3.6.10 命令创建新的python环境时提示 pyenv: no such command `virtualenv' larryma ...

  6. token、cookie、session的区别

    token是验证用户身份的令牌,通常是用于接口的身份验证,一般获取之后放在请求头中 cookie和session的区别: cookie是服务器发送到客户端然后存储在客户端的,可以用来保持用户的登录信息 ...

  7. 2023NOIP A层联测9 T3 天竺葵

    2023NOIP A层联测9 T3 天竺葵 题面及数据范围 Ps:连接为accoderOJ. 看题大概是一个最长上升子序列的带权版本,于是想到 dp. 设 \(dp[i][j]\) 为到第 \(i\) ...

  8. ElementUI ---- dialog点击取消后蒙遮层不消失

    场景: 页面A打开了 dialog, 然后点击 页面A dialog 的按钮 跳转到 页面B,并且打开页面B的 dialog 但是页面B的 dialog 关闭后,蒙遮层并没消失(已经设置了 :appe ...

  9. js之模块导入与导出:export、export default、module.exports、exports

    前两者export.export default可为一组,是es6的规范,和import匹配,import是es6中的语法标准:后两者module.exports.exports可为一组,是commo ...

  10. 基于python搭建FTP服务

    使用python搭建FTP服务非常容易,且非常稳定,更重要的是可以实现一些精细化的控制,例如精细的访问权限配置,详细的日志记录等工作 这里是使用了pyftpdlib模块 1. 安装 pip insta ...