Java 基础常识

news2025/1/15 17:49:10

一、Java运行机制

1.Java运行原理

编译:.java(源代码) ---> .class(字节码)
解释:.class(字节码) ---> 加载并启动JVM(类加载) ---> .class(机器指令)
执行:通过JVM来完成运行输出

2.Java运行过程

利用 javac 编译 .java   文件

利用 java   运行 .class 文件

3.Java虚拟机[JVM](java virtual machine)

在JVM的作用下,同一个Java程序可以在三个不用的操作系统中执行,实现了Java程序的跨平台性。 

1) JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在 JDK 中。

2) 对于不同的平台,有不同的虚拟机。

3) Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”

二、JDK和JRE的区别

1.JDK 基本介绍

1) JDK 的全称(Java Development Kit Java 开发工具包)

JDK = JRE + 开发工具集[java, javac,javadoc,javap 等]

2) JDK 是提供给 Java 开发人员使用的,其中包含了 java 的开发工具以及JRE。

2.JRE 基本介绍

1) JRE(Java Runtime Environment Java 运行环境)

JRE = JVM + Java SE 标准类库(java 核心类库)

2) 包括 Java 虚拟机(JVM Java Virtual Machine)和 Java 程序所需的核心类库等,如果想要运行一个开发好的 Java 程序, 计算机中只需要安装JRE。

3.JDK、JRE 和 JVM 的包含关系

1) JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)

2) JRE = JVM + Java SE 标准类库(java 核心类库)

3) 如果只想运行开发好的 .class 文件 只需要 JRE

三、程序编写要求 

1.基础语法

例如以下代码: 

public class Hello
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!\n");
    }
}
  1. public class Hello 表示 Hello 是一个类,是一个 public 公有的类。
  2. Hello{ } 表示一个类的开始和结束。
  3. public static void main(String[] args) 表示一个主方法,即我们程序的入口。
  4. main() {} 表示方法的开始和结束。
  5. System.out.println("hello,world~");输出语句。

2.注意事项

1.Java源文件以 .java 为扩展名。源文件的基本组成部分是类 (class) ,如本类中的Hello类。

2.Java应用程序的执行入口是main()方法。它有固定的书写格式:public static void main(String[] args) {...}

2.一个源文件中最多只能有一个public类。其它类的个数不限。这意味着含有多个类定义的文件进行编译之后会产生多个class文件。

3.如果源文件包含一个public类,则文件名必须按该类名命名。

4.一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public 类,这样入口方法就是非public 的main方法。

3.以C++的语法来描述

1.一个java文件内定义的多个类相当于C++中的命名空间,用来避免命名污染。

2.方法与C++的类内函数概念相同。

3.非public的类并不像C++中的默认private权限,而具有是包级私有访问权限。可在包内用限定符来进行访问。

4.第一个Java程序

public class Hello {
    public static void main(String[] args) {
        String message = "Hello World!\n";
        test.print(message);
    }
}
class test {
    static void print(String arg) {
        System.out.println(arg);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

欧姆龙CP1H系列PLC通讯扩展与数据采集

一、应用场景 纺织厂的粗纱机,控制系统由1台欧姆龙CP1H的PLC和1台昆仑通泰MCGS的触摸屏组成,触摸屏连接到PLC通讯扩展的接口CP1W-CIF01(RS232串行通讯)。现在MES管理系统,需要采集设备的数据,要求不改变原来…

【详解C++中的引用】

文章目录 一、什么是引用二、引用规则三、引用特性四、使用场景1.做函数参数2.做返回值五、常引用 ps:为什么类型转换会产生临时变量? 六、引用和指针的区别总结 一、什么是引用 引用就是给一个变量取别名。 注意:这个引用不会新开辟一块空…

微信小程序自定义组件:组件间通讯

前言 略 组件间通信 组件间的基本通信方式有以下几种: WXML 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据(自基础库版本 2.0.9 开始,还可以在数据中包含函数)。具体在 组件模…

Mybatis-plus 两种分页方法(分单表和联表)

mybatis-plus分别使用 一、PageHelper插件分页使用 准备1&#xff1a;引入PageHelper依赖 <!-- pagehelper 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId>…

面试高频代码题

文章目录 链表1.删除有序链表中的重复链表2.删除有序链表的重复数组并只保留只出现过一次的结点3. 无序单链表升序排列 数组1. 冒泡排序2. 折半查找3. 快排4.给1001个数&#xff0c;有一个是重复的&#xff0c;如何不使用额外空间找出来这个数&#xff1f;&#xff08;微软&…

智能文案改写工具-智能改写工具免费

智能写作机器人 智能写作机器人&#xff0c;这是一种让人类写作变得更加简单的创新技术。它的出现&#xff0c;为内容生产领域带来了巨大的进步&#xff0c;不仅提高了人们的写作效率&#xff0c;还让优质的内容更容易被产生和共享。现在&#xff0c;让我们来了解一下智能写作…

Spring Security --- formLogin配置

目录 环境准备 配置自定义登录表单页面 配置登录成功的跳转页面方式 配置登录失败的跳转页面方式 前端表单参数获取 CustomWebSecurityConfigurerAdapter配置类代码示例 环境准备 创建springboot项目引入spring security框架引入thymeleaf模板引擎 配置自定义登录表单页面…

TryHackMe-Year of the Pig(Linux渗透测试)

Year of the Pig 有些猪会飞&#xff0c;有些有故事要讲。开始吧&#xff01; 端口扫描 循例nmap Web枚举 进入80 gobuster扫 进到/admin&#xff0c;尝试弱口令&#xff0c;给出了密码提示 密码本身的一些很简单的单词&#xff0c;密码的后三位是两位数字加一个特殊字符 我…

Flask(Jinja2)服务端模板注入漏洞(SSTI)整理

整理一下Flask框架下的SSTI漏洞相关知识&#xff1a; 漏洞原理 Flask是一个很常用的python框架&#xff0c;其中存在SSTI漏洞。 SSTI&#xff0c;服务端模板注入&#xff0c;很早就知道这个东西&#xff0c;但没有仔细整理过&#xff0c;作为一种注入漏洞&#xff0c;简单说…

LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数

LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数 最近公共祖先[236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/)[235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-b…

redis单机最大并发量

redis单机最大并发量 布隆过滤器多级缓存客户端缓存应用层缓存Expires和Cache-Control的区别Nginx缓存管理 服务层缓存进程内缓存进程外缓存 缓存数据一致性问题的解决引入多级缓存设计的时刻 Redis的速度非常的快,单机的Redis就可以⽀撑 每秒十几万的并发,相对于MySQL来说,性…

Linux中将Python2升到Python3

目录 1、安装依赖包 2、下载python3 方式一 方式二 3.解压文件 4.安装 5.建立软连接 1、安装依赖包 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-dev…

Mysql·分库分表

Mysql分库分表 在mysql中新建数据库用以表分库分表mycat解压后配置文件参数server.xml 主要配置mycat服务的参数&#xff0c;比如端口号&#xff0c;myact用户名和密码使用的逻辑数据库等rule.xml 主要配置路由策略&#xff0c;主要有分片的片键&#xff0c;拆分的策略&#xf…

Elasticsearch:Elasticsearch 容量规划

Elasticsearch 是一个可扩展的分布式系统&#xff0c;可为企业搜索、日志聚合、可观察性和安全性提供解决方案。 Elastic 解决方案建立在一个单一、灵活的技术堆栈之上&#xff0c;可以部署在任何地方。 要在自托管或云端运行生产环境 Elasticsearch&#xff0c;需要规划基础架…

删除注册表配置后Chrome仍然显示“由贵单位管理”解决办法

这个提示并不影响使用&#xff0c;但是强迫症看着就是难受&#xff0c;搞掉他。 现象 找到是谁触发的 浏览器输入并打开chrome://policy/ 其实看不看意义不大&#xff0c;因为你知道了也奈何不了他。 解决问题 使用百度搜索一下都是提供的删除注册表的方法&#xff08;通过…

【C++技能树】NameSpace --命名空间的使用

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

burpsuite抓包数据分析

以抓到的pikachu的数据为例&#xff1a; POST /pikachu/vul/burteforce/bf_form.php HTTP/1.1 # POST请求 被抓包的文件 http协议是1.1 Host: www.xxx.com #Host是主机 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101Firefox/49.0 #user-agent是…

【C陷阱与缺陷】两道“有趣”的代码题

如果读者不了解函数指针的&#xff0c;可以先看看这篇文章 链接 < 第一题 > 代码&#xff1a; (*(void (*)())0)();解析&#xff1a; &#x1f4ac;如果你是头一次看上面这段代码的话&#xff0c;心里一定是一个大大的问号&#xff1f;&#xff1f;&#xff1f;现在我…

C++的输入输出概述

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

前缀和2:2615等值距离和

2615. 等值距离和 - 力扣&#xff08;LeetCode&#xff09; 做这道题之前&#xff0c;先完成1685. 有序数组中差绝对值之和 - 力扣&#xff08;LeetCode&#xff09; 一般性的&#xff0c;我们能在这类题目中总结出以下规律&#xff1a; 求解有序数组中每个元素与q的差值res时…