【Java基础】Java语言特性
认识Java
java语言的执行过程
-
编写纯文本文件 .java
-
经过javac编译器(java complier)编译 .class
.class是二进制的字节码
在源文件中定义几个类,就会生成几个 -
由JVM运行 .class
JVM把字节码编译成可以在处理器上运行的高性能的本地代码(native code),机器码

java是一种介于编译型和解释型语言之间的语言
我们需要格外注意的是 .class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(just-in-time compilation) 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言 。
终端运行代码,先javac编译,再java运行
反编译
Java 特性
1.Simple 简单
Java的语法实际上是C++语法的精华部分。Java语法简单,Java没有复杂的类型(structures,unions)以对象(Class)描述一切;Java取消了显式的指针运算,将其隐藏于对象的构造中(initialization, constructor);Java所有类型都是确定的(强类型),方便管理,具有强大的移植性;Java运行于虚拟机(virtual machine)同时也有JIT技术将Java代码直接转化为机器码,运行性能优良。
2.object-oriented 面向对象
面向对象不同于面向结构编程,面向结构编程先考虑局部,而面向对象先考虑整体,设计优先。Java没有C++的多继承概念,转而用轻量化的interface声明对象的功能;Java是类单继承的,其公共父类是Object,描述了Java中的对象应该遵守的规范;Java单继承表明继承是一种非普遍关心,如无必要不要使用,在增强类的功能时,优先考虑在对象内部声明组合对象和使用接口提供的服务。
3.distributed 分布性
Java类库实现了TCP/IP、HTTP、FTP等网络协议,很容易进行网络编程。比如处理TCP/IP的socket;处理HTTP的servlet。
4.robust 健壮性
Java是强静态语言,在编译期间就可以检测大部分类型错误;Java引入了泛型<>进一步增强了编译期的容错性,且提供了更强大的结构化编程工具;Java摒弃了指针,交由JVM自动管理内存,避免了显式调用导致的pointer bug。
5.secure 安全性
Java运行于JVM中,但是不可避免的要和本地代码交互,JVM提供了一层安全性,但是不代表Java代码在Java运行的主机上绝对安全,但这需要高超的技术。相比互联网上只通过数字签名的方式加密,Java的技术安全性更高。
6.architecture-neutral 跨平台
Java代码首先通过编译器转化为JVM可以运行的字节码,而JVM是独立于操作系统和硬件的一种更高一层的抽象,JVM基于栈实现机器的功能,具有强大的硬件兼容能力。JVM的存在保证了Java的跨平台性。
7.portable 可移植性
Java所有类型都是强制规范的,Java的API也完全屏蔽了底层的差异,结合JVM,Java具有强大的可移植性。
8.high-performance 高性能
Java通过JIT技术,在运行时将热点代码直接翻译为机器码,提高了Java在JVM上的运行效率,保证了Java的高性能。
9.multithread 多线程
Java提供了功能强大的多线程类库。
10.dynamic 动态
Java的Class存储了对象的类型信息,通过反射技术可以在运行时构建新的对象,增强对象的方法。这为Java提供了强大的动态能力,增加了Java编程的技术性和灵活性
JDK
Java Platfrom
Java平台是运行在其他平台(操作系统:软件+硬件)的软件系统
有两个组件:
-
The Java Virtual Machine 虚拟机
针对不同的操作系统有不同的虚拟机,因此java程序可以一次编译,到处运行
-
The Java Application Programming Interface Java 应用程序编程接口(API)
是一个组件集合(分为类库和接口库,这些库被称为包)
-
JDK(The Java SE Development Kit )是面向Java开发人员的SDK(Software Development Kit)
-
JRE(Java Runtime Enviroment)Java运行环境

版本更新

java8最常用- Oracle JDK是Open JDK(JDK的核心,开源)的一个实现,更加稳定高效

- Oracle JDK是Open JDK(JDK的核心,开源)的一个实现,更加稳定高效
认识java程序
示例
//输出hello world
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}
}
注释
-
多行注释 /* text* /
-
单行注释 //text
- 文档注释
/** documentation */
Javadoc(文档注释)详解 (biancheng.net)
根据不同的标签编写注释,最后利用javadoc命令可以生成一个html格式的程序说明文档
main方法
public static void main(String[] args)
-
public static 修饰符
- 顺序是约定俗成的
-
void 返回值
-
main 函数名
- 是一个程序的入口
-
args 命令行参数数组
-
是程序运行时,系统传给程序的参数
-
名字是约定俗成的
-
java命令行参数详解 - 掘金 (juejin.cn)

-

-
相关文章:
【Java基础】Java语言特性
认识Java java语言的执行过程 编写纯文本文件 .java 经过javac编译器(java complier)编译 .class .class是二进制的字节码 在源文件中定义几个类,就会生成几个 由JVM运行 .class JVM把字节码编译成可以在处理器上运行的高性能的本地代码(native code),…...
python进阶--Numyp库(一)
一、Numpy库介绍 NumPy(Numerical Python)是Python的⼀种开源的数值计算扩展。提供多维数组对象,各种派⽣对象(如掩码数组和矩阵),这种⼯具可⽤来存储和处理⼤型矩阵,⽐Python⾃身的嵌套列表&am…...
CV学习笔记-Inception
CV学习笔记-Inception 目录 文章目录CV学习笔记-Inception目录1. 常见的卷积神经网络2. Inception(1) Inception提出背景(2) Inception module 核心思想3. Inception的历史版本(1) InceptionV1-GoogleNet(2) InceptionV2(3) InceptionV3(4) Inception V44. Inception模型的特点…...
注意力机制笔记——结合沐神和B站老弓up主
B站【大白话浅谈【注意力机制】】 聚类 是针对 样本, 注意力机制是针对样本相关性,来进行计算的 自注意力机制 指的是 query ,key,value都是同一个部分。 可以学到 类似的 短语 ,和 语义特征。如its 指代的对象。 评论区大佬 根据这篇论文《Effective Approaches to…...
建议收藏,轻松搞懂区块链
未来已来,只是不均衡地分布在当下 大家好,我是菜农,欢迎来到我的频道。 本文共 5844字,预计阅读 30 分钟 区块链是近些年来最热门的前沿技术,被认为是未来十几年对金融、物联网、医疗等诸多领域产生最大影响的"…...
php设计一个新春祝福墙
记得十几年前的时候,每到春节,各大网站都会建一个祝福墙,上面挂满网友的新年寄语。这些年随着移动互联网的高速发展,web的新春祝福墙越来越少了。今天,咱们就来考考古,用快速原型法进行设计。原型设计采用M…...
KubeSphere 社区双周报 | OpenFunction 集成 WasmEdge | 2023.02.03-02.16
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.02.03-2023.…...
数字IC/FPGA 秋招知识点不全面整理
1. 引言 这篇文章的由来 秋招的时候,刚开始复习一些知识点的时候没有什么思路,只是盲目的看相关的书籍和资料,结果是留在脑子中的知识很有限,而且不够系统,在我需要它的时候,并不能很快的回忆起来。 于是就想着把一些典型的知识整理成一个文档,在进行刷题的时候可以比…...
你知道java8是如何排序Map嘛?
在Java中,有多种方法可以对Map进行排序,但是我们将重点介绍Java 8 Stream,这是实现目标的一种非常优雅的方法。 学习一下HashMap的merge()函数 在学习Map排序之前,有必要讲一下HashMap的merge()函数,该函数应用场景就…...
【李忍考研传】一、李忍
“老师,我来回答!” “非常好,我记得你是叫……呃……是李念同学吗?” “不,老师,我叫李忍。” “好,你来回答一下这个问题。” “这题用海明码校验的知识,能检错一位纠错一位&a…...
测牛学堂:软件测试python深入之类和对象的属性和方法总结
类对象和实例对象 类对象就是我们定义的类。 在代码执行的时候,解释器会自动创建类对象。 类对象的作用: 1 使用类对象创建实例对象 2 存储类的一些特性,就是类里面定义的属性 创建对象的过程也称为实例化的对象。所以,类创建的对…...
css实例--新闻页面
实现效果 实现代码 html代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…...
SpringCloudGateway 动态转发后端服务
API网关的核心功能是统一流量入口,实现路由转发,SpringCloudGateway是API网关开发的技术之一,此外比较流行的还有Kong和ApiSix,这2个都是基于OpenResty技术栈。 简单的路由转发可以通过SpringCloudGateway的配置文件实现…...
使用canvas写一个flappy bird小游戏
简介 canvas 是HTML5 提供的一种新标签,它可以支持 JavaScript 在上面绘画,控制每一个像素,它经常被用来制作小游戏,接下来我将用它来模仿制作一款叫flappy bird的小游戏。flappy bird(中文名:笨鸟先飞&am…...
KVM-2、虚拟化基础
1. 虚拟化概念 什么是虚拟化 **虚拟化是使用所谓虚拟机管理程序从一台物理机上创建若干个虚拟机的过程。**虚拟机的行为和运转方式与物理机一样,但它们会使用物理机的计算资源,如 CPU 、内存和存储。虚拟机管理程序会根据需要将这些计算资源分配给每个虚拟机。 虚拟化有哪…...
设计模式之观察者模式与访问者模式详解和应用
目录1.访问者模式详解1.1 访问者模式的定义1.1.1 访问者模式在生活中的体现1.1.2 访问者模式的适用场景1.2 访问者模式的通用实现1.3 访问者模式的使用案例之KPI考核1.3.1 类图设计1.3.2 代码实现1.4 访问者模式扩展---分派1.4.1 java中静态分派示例代码1.4.2 java中动态分派1.…...
spring注解方式整合Dubbo源码解析
系列文章目录 前言 本节我们的Dubbo源码版本基于2.6.x 在前一章我们的整合案例中,我们有几个比较关键的步骤: 在启动类上标注了EnableDubbo注解在provider类上面标注了Service注解来提供dubbo服务在消费的时候通过Reference注解引入dubbo服务在配置文件…...
大数值金额大写转换(C语言)
关于大数值金额大写转换,在财务管理的应用方面没什么意义。一般来说,千亿级,万亿级的数值就够了。因为在国家级层面是以亿为单位的,也就表达为千万亿,万万亿。在企业层面数值金额转换设置到千亿、万亿就行了。大的集团…...
迷宫问题图解 : 基于骨架提取、四邻域
目录 1. 迷宫的连通域 2. How to remove branch ? 3. 基于4邻域的 remove 分支 3.1 找到分支的端点 3.2 4邻域的 remove 分支 3.3 循环移除分支 3.4 code 4. 迷宫路线 4.1 预处理 4.2 提取骨架 4.3 分支的端点 4.4 去除分支的端点 4.5 循环去除分支 4…...
Web开发环境快速搭建:Miniconda-Python3.11镜像实战应用
Web开发环境快速搭建:Miniconda-Python3.11镜像实战应用 1. 为什么选择Miniconda-Python3.11 Python作为Web开发的主流语言之一,环境配置一直是新手面临的第一个挑战。Miniconda-Python3.11镜像提供了一种开箱即用的解决方案,相比传统安装方…...
OpenClaw多模态飞书助手:Qwen3-VL:30B实战指南
OpenClaw多模态飞书助手:Qwen3-VL:30B实战指南 1. 为什么我们需要多模态飞书助手? 去年夏天,我负责一个跨部门协作项目时,每天要处理上百条飞书消息和几十份文档。最头疼的是同事发来的截图——有时是数据图表,有时是…...
Easy-Scraper:用 Rust 重新定义网页数据采集的效率边界
Easy-Scraper:用 Rust 重新定义网页数据采集的效率边界 【免费下载链接】easy-scraper Easy scraping library 项目地址: https://gitcode.com/gh_mirrors/ea/easy-scraper 当你需要从网页中提取数据时,是否遇到过这些困境:写了 200 行…...
如何让鼠标和触控板和平共处:Scroll Reverser实现设备独立控制的效率革命
如何让鼠标和触控板和平共处:Scroll Reverser实现设备独立控制的效率革命 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在多设备协同办公成为常态的今天࿰…...
手把手教你用EFR32BG22实现BLE串口透传(附GATT配置全流程)
EFR32BG22低功耗蓝牙串口透传开发实战指南 在物联网终端设备开发中,蓝牙串口透传是最基础也最实用的功能之一。本文将带您深入EFR32BG22芯片的蓝牙开发世界,从零开始构建一个高效的BLE串口透传服务。不同于简单的代码搬运,我们将重点关注GATT…...
哔哩下载姬DownKyi实用指南:从新手到高手的进阶之路
哔哩下载姬DownKyi实用指南:从新手到高手的进阶之路 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等…...
不用命令行!Win11任务栏图标消失的图形化解决方案(Explorer重启神器推荐)
Win11任务栏图标消失?5种可视化修复方案与深度解析 每次切换虚拟桌面后,Win11任务栏图标集体"失踪"的毛病,堪称微软系统最顽固的"幽灵故障"之一。作为从Windows 95时代就存在的资源管理器痼疾,这个问题在Win1…...
【独家首发】Polars 2.0 vs Pandas 2.2清洗基准测试:10亿行CSV清洗仅耗11.3秒?真相在此
第一章:Polars 2.0大规模数据清洗的范式跃迁Polars 2.0 不再是 Pandas 的轻量替代品,而是一次面向现代硬件与真实业务场景的数据处理范式重构。其核心跃迁体现在零拷贝内存布局、全链路惰性执行引擎(LazyFrame)与原生支持的并行流…...
OpenAI推安全漏洞赏金计划,应对AI潜在风险
OpenAI启动公共安全漏洞赏金计划,剑指AI潜在风险品玩3月26日消息,OpenAI正式推出公共安全漏洞赏金计划,此计划意在识别并修复其产品中潜在的AI滥用与安全风险。该计划是对现有安全漏洞赏金项目的补充,专门接纳那些虽不构成传统技术…...
轻量级AI写作工坊:OpenClaw+nanobot内容创作流
轻量级AI写作工坊:OpenClawnanobot内容创作流 1. 为什么需要自动化写作助手 作为一名技术博主兼自媒体运营者,我每天都要面对内容创作的"三重压力":选题焦虑、写作耗时、发布繁琐。最痛苦的是,当我花两小时写完一篇技…...

