Java程序编写(上)

news2024/11/18 3:37:08

HelloWorld

1 创建一个以java为后缀名的文件
编写代码

public class Hello {
	public static void main(String[] args) {
		System.out.println("Hello, World!");
	}
}

其中,psvm是下述代码的缩写:

public static void main(String[] args) 

sout是下述代码的缩写:

System.out.println();

2 然后在终端运行Hello.java文件,进行Java源代码到Java字节码文件的编译过程:

javac Hello.java

这个过程包括词法分析、语法分析、语义分析和最终的字节码生成。
如果编译成功,将会生成与每个类对应的.class文件,这些文件包含了Java程序的字节码表示。

3 最后在终端运行生成的Hello程序:

java Hello

当运行java Hello时,实际上在启动Java虚拟机(JVM),并告诉它要运行名为Hello的Java程序。

具体来说,java命令用于启动Java应用程序。当你提供类名(不包括.class扩展名)作为参数时,Java虚拟机会尝试加载这个类,并执行它的main方法。在这种情况下,假设Hello是一个包含main方法的类,JVM将加载这个类并执行main方法。

注意,Hello.java文件里的类名要和文件名称保持一致(都是Hello)。

Java程序的运行机制

编译型程序在运行前需要将源代码一次性翻译成机器语言(C、C++),而解释型程序在运行时逐行或逐段地翻译并执行源代码(Python)。

Java通常被描述为一种同时具备编译型和解释型特性的语言。

这是因为Java源代码首先被编译成中间代码(字节码 .class文件)——编译型
但是,.class文件并不能直接运行在操作系统上,需要在Java虚拟机(JVM)上解释为二进制代码执行——解释型

Java程序的运行机制

  • 编写程序:首先,程序员使用文本编辑器编写Java源代码文件,通常以.java为扩展名。

  • 编译:使用javac命令对Java源代码进行编译,将其转换为字节码文件(.class文件),这个阶段会进行词法分析、语法分析、语义分析和最终的字节码生成。

  • 解释与执行:Java程序的字节码文件被Java虚拟机(JVM)解释执行。JVM将字节码文件加载到内存中,逐行或逐段地解释执行,并在特定平台上运行程序。

这个过程使得Java具有跨平台的特性,因为字节码文件可以在任何安装了Java虚拟机的平台上运行。

在这里插入图片描述
当然,这并不是Java程序运行机制的全部,还有类加载、垃圾回收等诸多细节,但总的来说,这三个阶段构成了Java程序的运行机制。

注释

Java的三种注释:

  • 单行注释
  • 多行注释
  • 文档注释
    在这里插入图片描述

标识符

  • 组成:标识符可以由字母、数字、下划线(_)和美元符号($)组成。
  • 首字符:标识符的首字符必须是字母、下划线(_)或美元符号($)。
  • 大小写敏感:Java是大小写敏感的语言,因此大写字母和小写字母被视为不同的字符。
  • 长度:标识符的长度没有限制,但只有前面的字符会被编译器处理,后面的字符会被忽略。
  • 关键字:不能使用Java的关键字作为标识符。例如,intclass等都是Java的关键字,不能用作标识符。

合法示例:myVariableMAX_VALUE_count$value 都是合法的标识符。

Java关键字

在这里插入图片描述
48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。

3个特殊直接量:true、false、null。

2个保留字:goto、const。

数据类型

在计算机编程中,"强类型"和"弱类型"是描述编程语言类型系统的术语。

强类型语言:
在强类型语言中,变量必须严格符合其声明的类型,不允许隐式类型转换。这意味着在使用变量之前,必须明确地定义其类型,并且在不同类型之间的转换通常需要显式的转换操作。强类型语言可以更早地发现一些潜在的类型错误,从而提高了程序的安全性和可靠性。Java和C#是典型的强类型语言。

弱类型语言:
在弱类型语言中,变量可以被隐式地转换为其他类型,甚至在不同类型之间进行混合运算,而不需要显式的类型转换。这种灵活性可能会导致一些意外的行为,因为编译器或解释器会尝试隐式地转换变量的类型以适应上下文。弱类型语言通常更灵活,但也更容易出现类型相关的错误。JavaScript和PHP是典型的弱类型语言。

Java数据类型分类

  • 基本类型(primitive type)
    • 数值类型
      • 整数类型 byte(1个字节)、short(2个字节)、int(4个字节)、long(8个字节)
      • 浮点类型 float(4个字节)、double(8个字节)
      • 字符类型 char(2个字节)
    • boolean类型
  • 引用类型
    • 接口
    • 数组

在这里插入图片描述

整数拓展:
不同进制表示

在这里插入图片描述

浮点数拓展:

在这里插入图片描述

这里判断的是类型,因此返回false
因此最好完全避免使用浮点数进行比较!最好完全避免使用浮点数进行比较!最好完全避免使用浮点数进行比较!

银行业务可以使用BigDecimal数学工具类。

字符拓展:
所有字符的本质还是数字
Unicode编码占2个字节,0-65536,用十六进制表示。

在这里插入图片描述
字符串:
在这里插入图片描述
对于s1s2,由于它们都使用字符串字面值创建,因此它们指向的是相同的字符串对象,所以s1 == s2的结果是true

而对于s3s4,虽然它们的内容相同,但是使用new String()创建的对象会在堆内存中每次都创建一个新的对象,所以s3 == s4的结果是false

第一种方式使用字符串字面值创建字符串对象,它会利用Java的字符串池来重用字符串对象,从而节省内存并提高性能,因此推荐第一种方式,而第二种方式会创建一个新的字符串对象,即使字符串池中已经存在相同内容的字符串。

类型转换

Java是强类型语言,因此不同类型的数据需要转换至同一类型再进行运算。

  • 强制转换 (类型)变量名 转换等级是从高等级转换为低等级
    需要注意的是,强制类型转换可能会导致数据丢失或溢出(精度问题和内存溢出),因此在进行强制类型转换时应格外小心。
int a = 1000;  
byte b = (byte) a;  
System.out.println(b);  
  • 自动转换 转换等级是从低等级转换为高等级

在操作比较大的数的时候,注意溢出问题。

JDK7新特性:数字之间可以使用下划线进行分割。

在这里插入图片描述

变量

Java是一种强类型语言,每个变量都必须先声明其类型

type varName [= value];

可以使用逗号隔开声明多个同类型的变量。

变量作用域

  • 类变量
    需要使用static声明,可以在类中使用。
  • 实例变量
    从属于对象,如果不自行初始化,默认值为0 0.0 false null
    在使用new实例化一个对象之后才能调用(实例方法也是需要通过对象来调用)。
  • 局部变量
    必须声明和初始化

在这里插入图片描述

在这里插入图片描述

常量

final name = value;
final double PI = 3.14;

常量名通常使用大写字母。

在这里插入图片描述

变量命名规范

  1. 使用有意义的名称
  2. 类成员变量:驼峰命名法,例如monthSalary
  3. 局部变量:小写字母和驼峰原则
  4. 常量:大写字母和下划线,例如MAX_VALUE
  5. 类名:首字母大写和驼峰原则,例如DemoRun()

运算符

算数运算符

+ - * / % ++ --

赋值运算符

= += -= *= /=

关系运算符

> < >= <= == != instanceof

逻辑运算符

&& || !

位运算符

& | ^(异或) ~ <<*2>>/2>>>

条件运算符

? :

优先级

  1. 一元运算符(例如取反运算符 -、逻辑非 !
  2. 乘法和除法运算符(*/%
  3. 加法和减法运算符(+-
  4. 移位运算符(<<>>>>>
  5. 关系运算符(<<=>>=instanceof
  6. 相等运算符(==!=
  7. 位与运算符 &
  8. 位异或运算符 ^
  9. 位或运算符 |
  10. 逻辑与运算符 &&
  11. 逻辑或运算符 ||
  12. 条件运算符 ? :
  13. 赋值运算符(例如赋值 =、复合赋值 +=-=等)
  14. 逗号运算符 ,

包机制

在Java中,包(Package)是用来组织类和接口的命名空间的机制。它们被用来避免命名冲突,并且可以在逻辑上组织类和接口。

包的声明

在Java源文件的开头,可以使用 package 声明来指定该文件中的类所属的包。

package com.example.myapp;  

一般使用公司域名倒置作为包名。

包的作用

  • 命名空间管理:包可以防止类名冲突,因为不同的包可以包含同名的类。
  • 访问控制:可以使用包来限制对类的访问,通过使用访问修饰符(publicprotectedprivate)。
  • 组织管理:包可以帮助组织类和接口,使得项目更易于维护和管理。

包的导入

在Java中,使用 import 语句可以导入其他包中的类,以便在当前类中使用。

import java.util.ArrayList;  

在这里插入图片描述

package语句放在import语句前面。

Java Doc

  1. 使用IDEA自动生成帮助文档
    https://blog.csdn.net/Sunny_tx/article/details/129971282
    在这里插入图片描述

  2. 终端命令生成

    javadoc -encoding UTF-8 -charset UTF-8 Doc.java
    

补充材料:
JDK8帮助文档
阿里巴巴开发手册博客

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

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

相关文章

无人机语音中继电台 U-ATC118

简介 甚高频无线电中继通讯系统使用经过适航认证的机载电台连接数字网络传输模块&#xff0c;通过网络远程控制无缝实现无人机操作员与塔台直接语音通话。无人机操作员可以从地面控制站远程操作机载电台进行频率切换、静噪开关、PTT按钮&#xff0c;电台虚拟面板与真实面板布局…

C语言定长数组 变长数组 柔性数组

C语言定长数组 变长数组 柔性数组 文章目录 C语言定长数组 变长数组 柔性数组1. 定长数组2. 变长数组3. 柔性数组3.1 结构体的大小3.2 柔性数组的使用 1. 定长数组 在C99标准之前&#xff0c;C语言在创建数组的时候&#xff0c;数组的大小只能使用常量&#xff0c;常量表达式来…

CPU的三大调度

计算机系统中的调度可以分为不同层次&#xff0c;包括作业调度、内存调度和进程调度。这三种调度分别负责管理和优化计算机系统中不同层次的资源分配和执行顺序。 高级调度&#xff1a;作业调度&#xff08;Job Scheduling&#xff09;&#xff1a; 作业调度是指对提交到计算…

国产Type-C PD芯片—接口快充取电芯片

常用USB PDTYPE-C受电端&#xff0c;即设备端协议IC芯片&#xff08;PD Sink&#xff0c;也叫PD诱骗芯片&#xff09;&#xff0c;诱导取电芯片。 产品介绍 LDR6328: ◇ 采用 SOP-8 封装 ◇ 兼容 USB PD 3.0 规范&#xff0c;支持 USB PD 2.0 ◇ 兼容 QC 3.0 规范&#x…

Python绘制多分类ROC曲线

目录 1 数据集介绍 1.1 数据集简介 1.2 数据预处理 2随机森林分类 2.1 数据加载 2.2 参数寻优 2.3 模型训练与评估 3 绘制十分类ROC曲线 第一步&#xff0c;计算每个分类的预测结果概率 第二步&#xff0c;画图数据准备 第三步&#xff0c;绘制十分类ROC曲线 1 数据集…

TailwindCSS 如何设置 placeholder 的样式

前言 placeholder 在前端多用于 input、textarea 等任何输入或者文本区域的标签&#xff0c;它用户在用户输入内容之前显示一些提示。浏览器自带的 placeholder 样式可能不符合设计规范&#xff0c;此时就需要通过 css 进行样式美化。 当项目中使用 TailwindCSS 处理样式时&a…

手把手教你使用axure9画出图书出借的功能界面(原型模型)从0实现图书借阅界面

问题 设计图书出借的功能界面&#xff0c;并使用axure画出界面原型&#xff08;pc端或移动端都可以&#xff09;。就你的设计&#xff0c;你觉得有哪些方面需要跟用户沟通确认&#xff1f; 一、登录界面 1.先将图片背景改成灰色 2.插入文本框 3.插入文字&#xff0c;输入图书…

物联网第十四周总结

本周任务 消息转换器 PostgreSQL学习&#xff0c;JetLinks配置PostgreSQL 问题与总结 JetLinks配置PostgreSQL的时候&#xff0c;启动报错 2023-12-08 09:34:30.478 ERROR 19028 --- [actor-tcp-nio-1] o.h.e.r.e.r.r.R2dbcReactiveSqlExecutor : > Error: c…

Elasticsearch 8.9 refresh刷Es缓冲区的数据到Lucene,更新segemnt,使数据可见

一、相关API的handler1、接受HTTP请求的hander(RestRefreshAction)2、往数据节点发送刷新请求的action(TransportRefreshAction)3、数据节点接收主节点refresh传输的action(TransportShardRefreshAction) 二、在IndexShard执行refresh操作1、根据入参决定是使用lucene提供的阻塞…

Http请求(bug)——路径变量传参遇到特殊符号的问题 URL中的#,?,符号作用

前言 本篇博客分析路径变量传参遇到特殊符号的问题&#xff0c;阐述了URL中的#&#xff0c;&#xff1f;&#xff0c;&符号作用。 目录 前言引出路径变量传参遇到特殊符号的问题问题描述问题分析 URL中的 #&#xff0c;&#xff1f;&#xff0c;&符号的作用URL中# 的作…

【探索Linux】—— 强大的命令行工具 P.21(多线程 | 线程同步 | 条件变量 | 线程安全)

阅读导航 引言一、线程同步1. 竞态条件的概念2. 线程同步的概念 二、条件变量1. 条件变量函数⭕使用前提&#xff08;1&#xff09;初始化条件变量&#xff08;2&#xff09;等待条件满足&#xff08;3&#xff09;唤醒等待pthread_cond_broadcast()pthread_cond_signal() &…

Qexo博客后台管理部署

Qexo博客后台管理部署 个人主页 个人博客 参考文档 https://www.oplog.cn/qexo/本地部署 采用本地Docker部署管理本地Hexo 下载代码包 若无法下载使用科学工具下载到本地在上传到服务器 wget https://github.com/Qexo/Qexo/archive/refs/tags/3.0.1.zip# 解压 unzip Qexo…

SQL命令---修改字段的排列位置

介绍 使用sql语句表字段的排列顺序。 命令 alter table 表名 modify 字段名1 数据类型 first|after 字段名2;例子 将a表中的age字段改为表的第一个字段。 alter table a modify age int(12) first;下面是执行命令后的表结构&#xff1a; 将a表中的age字段放到name字段之…

【linux】查看CPU和内存信息

之前咱们一起学习了查看内存的和CPU的命令。 ​mpstat &#xff1a; 【linux】 mpstat 使用 uptime&#xff1a;【Linux】 uptime命令使用 CPU的使用率&#xff1a;【linux】查看CPU的使用率 nmon &#xff1a;【linux】nmon 工具使用 htop &#xff1a;【linux】htop 命令…

学习Linux(2)-学习Linux命令

Linux目录结构 Linux目录结构-菜鸟教程 /bin&#xff1a;bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot&#xff1a;这里存放的是启动 Linux 时使用的一些核心文件&#xff0c;包括一些连接文件以及镜像文件。 /dev &#xff1a;dev 是 De…

Cocos Creator:创建棋盘

Cocos Creator&#xff1a;创建棋盘 创建地图三部曲&#xff1a;1. 创建layout组件2. 创建预制体Prefab&#xff0c;做好精灵贴图&#xff1a;3. 创建脚本LayoutSprite.ts收尾工作&#xff1a; 创建地图三部曲&#xff1a; 1. 创建layout组件 使用layout进行布局&#xff0c;…

数据表记录的操作

一、数据添加 1、打开SSMS&#xff0c;附加数据库&#xff08;数据库文件在自己的文件夹下面&#xff09;&#xff0c;并进行下面的设置&#xff1a; &#xff08;1&#xff09;设置“部门信息”表中的“编号”为主键&#xff08;SSMS&#xff09; 首先建立好所需的数据库库…

HNU计算机视觉作业三

前言 选修的是蔡mj老师的计算机视觉&#xff0c;上课还是不错的&#xff0c;但是OpenCV可能需要自己学才能完整把作业写出来。由于没有认真学&#xff0c;这门课最后混了80多分&#xff0c;所以下面作业解题过程均为自己写的&#xff0c;并不是标准答案&#xff0c;仅供参考 …

单臂路由与三层交换机

单臂路由 划分VLAN后同一VLAN的计算机属于同一个广播域&#xff0c;同一VLAN的计算机之间的通信是不成问题的。然而&#xff0c;处于不同VLAN的计算机即使是在同一交换机上&#xff0c;它们之间的通信也必须使用路由器。 图&#xff08;a&#xff09;是一种实现VLAN间路由的方…

ubuntu上搭建bazel编译环境,构建Android APP

背景是github上下载的工程&#xff0c;说明仅支持bazel编译&#xff0c;折腾了一天Android studio&#xff0c;失败。 不得不尝试单价bazel编译环境&#xff0c;并不复杂&#xff0c;过程记录如下 说明&#xff1a;ubuntu环境是20.04&#xff0c;pve虚拟机安装 1.安装jdk sudo…