当前位置: 首页 > news >正文

Java基础八股

Java基础八股

    • Java语言
      • Java语言有什么特点
      • Java与C++区别
      • Java如何实现跨平台
      • JVMvsJDKvsJRE
      • 标识符和关键字的区别是什么
      • 自增自减运算符
      • 移位运算符
      • continue,break,return的区别是什么
      • final,finally,finalize的区别
      • final关键字的作用时什么
    • 变量

Java语言

Java语言有什么特点

  • Java是一门面向对象的编程语言,具备封装,继承,多态,抽象四大特性
    封装: 提高类的易用性,减少编程过程中代码出错的风险
    继承: 实现代码的复用
    抽象: 能让程序的设计和实现分离
    多态: 提高了程序的可扩展性

  • Java具有平台独立性和移植性
    一次编写,到处运行.已编译的Java程序可以在任何带有JVM的平台上运行.
    方式: 将代码编译成.class文件,再把class文件打成java包,这个jar包就可以在不同的平台运行了.

  • Java具有稳健型
    Java上一个强类型语言:
    检测潜在类型不匹配问题的功能;
    要求显示的方法声明,不支持c风格的隐式说明;
    有异常处理;

Java与C++区别

  • C++支持多继承,并且有指针的概念,程序员自己管理内存
  • Java上单继承,可以用接口实现多继承;Java不提供指针直接访问内存,有JVM自动内存管理机制,不需要程序员手动释放无用内存.

Java如何实现跨平台

Java通过JVM(Java虚拟机)实现跨平台
JVM可以理解成一个软件,不同平台有不同版本.
编写的Java代码编译后生成.class文件(字节码文件).
JVM就是负责将字节码文件翻译成特定平台下的机器码.
不同平台下翻译生成的字节码上一样的,但是由JVM翻译成的机器码却不一样的.

JVMvsJDKvsJRE

JVM上运行Java字节码的虚拟机.
JVM有针对不同系统的特定实现(windos,linux,macOS)
目的是使用相同的字节码,他们都会给出相同的结果.
JVM并不是只有一种,只要满足JVM规范,每个人或组织都可以开发自己的专属JVM.

JDK
JDK是Java Development Kit(Java开发工具包) 缩写,它是功能齐全的Java 还有编译器和工具,可以创建和编译程序.

SDK(Software Development Kit)软件开发工具包.

JRE
Java运行时环境,它是运行已编译Java程序所需的所有内容集合(包括JVM,Java类库,Java命令和其他一些基础构件)

总结
JRE = JVM+Java核心库
JDK = jRE+Java工具+编译器+调试器

标识符和关键字的区别是什么

写程序时,需要为程序,类,变量,方法取名字就有了标识符.
简单来说,标识符就是一个名字
但对于有些标识符,Java语言已经赋予了其特殊的含义,只能用于特定的地方,这些特殊的标识符就是关键字.

自增自减运算符

符号在前先加减,符号在后后加减

移位运算符

移位操作中,被操作的数据被视为二进制数,移位就是向左或向右移动若干位的运算.
三种移位运算符

  • << :左移运算符,向左移若干位,高位丢弃,低位补零
  • : 带符号右移,向右移若干位,高位补符号位,低位丢弃.
    正数高位补0,负数高位补1.

  • : 无符号右移,忽略符号位,空位都以0补齐
    移位操作服支持的类型只有int和long.
    编译器对short,byte,char类型进行移位前,都会将其转换为int类型再操作.
    移位超过所占有位数会先求余(%)再进行左移和右移操作

continue,break,return的区别是什么

循环结构中,当循环条件不满足或者是循环次数达到要求时,循环正常结束,
但有时候需要中循环过程中,发生某种条件时,提前终止循环,就会用到下面几个关键词

  • continue: 跳出当前的这一次循环,继续下一次循环
  • break: 跳出整个循环体,继续执行循环下面的语句
  • return: 跳出所在方法,结束该方法的运行.

final,finally,finalize的区别

  • final
    用于修饰属性,方法和类,分别表示属性不能被重新修改,方法不可被覆盖,类不可被继承
  • finally
    异常处理语句结构的一部分,一般已try-catch-finally的形式出现,finally总是被执行
  • finalize
    Object 类的一个方法,该方法一般由垃圾回收器来调用,当我们调用System.gc方法时,由垃圾回收器调用finalize方法回收垃圾,JVM并不保证此方法总被调用(垃圾回收的确切时间和频率是由 JVM 的垃圾回收器(GC)算法和策略决定的,这些算法和策略可能因不同的 JVM 实现和配置而异。)

final关键字的作用时什么

  • final修饰的类不能被继承
  • final修饰的方法不能被重写
  • final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改.

变量

相关文章:

  • opencv笔记(13)—— 停车场车位识别
  • 银行批量支付业务功能测试点详细介绍
  • C语言编程零基础:开启编程之旅的起点
  • 乡镇围栏数据存储ES实践
  • MySQL之创建高性能的索引(十二)
  • 设计模式(五)结构型模式---适配器模式
  • Unity DOTS技术(三)JobSystem+Burst+批处理
  • Web前端框架:深入探索与实践
  • 51单片机串口通信实现餐厅叫号
  • 数论1---整除
  • paddleocr快速入门:基于python脚本及命令行两种方式实现图片OCR识别
  • Qt 自定义代理类
  • ubuntu下搭建Supervisor
  • prometheus-alert使用
  • 达梦8 内存泄漏泄漏原因分析之一
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • @angular/forms 源码解析之双向绑定
  • [笔记] php常见简单功能及函数
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 2017-09-12 前端日报
  • docker python 配置
  • Javascript基础之Array数组API
  • JavaScript中的对象个人分享
  • Java比较器对数组,集合排序
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Tornado学习笔记(1)
  • windows-nginx-https-本地配置
  • 阿里云购买磁盘后挂载
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 基于游标的分页接口实现
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用 @font-face
  • 收藏好这篇,别再只说“数据劫持”了
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • ## 1.3.Git命令
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #Spring-boot高级
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (02)vite环境变量配置
  • (20)docke容器
  • (c语言+数据结构链表)项目:贪吃蛇
  • (undone) MIT6.824 Lecture1 笔记
  • (二十三)Flask之高频面试点
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (三)终结任务
  • (十三)Flask之特殊装饰器详解
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)stm32之通信协议
  • (五)Python 垃圾回收机制
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)EXC_BREAKPOINT僵尸错误