Java 入门
目录
Java简介
Java JDK开发环境配置
第一个Java程序
Java标识符与关键字
Java注释
Java常量
Java变量的定义和使用
Java简介
Java简介:
Java是由Sun Microsystems公司于1995年推出的一门面向对象的高级程序设计语言,可以运行于多个平台,其创始人为James Gosling。而后于2010年Oracle(甲骨文)公司收购Sun Microsystems,之后就由Oracle公司负责Java的维护和版本升级。毫无疑问,Java语言可以说是最近十余年发展最迅速、影响也越大的一门编程语言,与C语言、C++常年位列“兵器榜”前三,且时不时的冲上榜一,或许是时代的需要,无论是Web应用开发还是移动端安卓生态,大家听到最多的莫过于Java了,这就是Java的影响力。
Java的分类,总体来说Java分为三类,分别是:
JavaSE(J2SE)(Java 2 Platform Standard Edition,Java平台标准版)
JavaEE(J2EE)(Java 2 Platform Enterprise Edition,Java平台企业版)
JavaME(J2ME)(Java 2 Platform Micro Edition,Java平台微型版)。
Java语言特点:
作为主流开发语言,之所以这么长久不衰,一定有自己的独特之处,除了C、C++等语言的都有的特性之外,罗列几项Java特有的特性如下:
-
跨平台特性
所谓的跨平台,是因为Java的代码只需一次编写、处处执行,即不关心什么平台,只要有JVM虚拟机即可运行,真正做到跨平台。
-
简单性
所谓的简单,并非单纯的语法简单,如舍弃了C++中继承复杂的一些问题,舍弃了C中的指针,自动垃圾回收机制使得动态内存管理也不用担心内存泄露,除此之外,由于和C/C++常规语法非常相似,因此有C/C++基础的同学学起来会非常顺利。
-
解释性
Java语言首先是需要编译的,但编译之后的代码并非像C/C++一样的机器码,而是字节码,只要是Java的虚拟机都可以解释执行,这种特性使得编译之后的Java语言既能跨平台又可以执行速度很快。
-
健壮性
强类型机制、垃圾回收、异常处理使得Java开发出来的程序更有安全的保证。
Java JDK开发环境配置
与其他语言一样,学习和使用Java语言需要提前准备下载和安装编译器,即JDK,JDK是英文Java Development Kit的缩写,即Java开发工具,它包含了支持Java编译运行的一切环境,下面我们开始到官方下载,地址是:Java Downloads | Oracle
打开的滚动找到如下位置:
大家根据自己的系统是windows还是linux选择对应的下载。
PS:因为官方可能会更新,因此大家打开的链接可能与本教程的图片不一致,不影响配置思路。
以windows平台为例,大家可以选择第二个exe文件下载并安装,安装完成之后进行最重要的环境变量的配置,配置窗口位于:右键我的电脑-属性-高级系统设置,在高级的选项卡中点击环境配置。
以JDK1.8版本为例,分别添加以下三个环境变量:
变量名:JAVA_HOME
变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根据自己的实际路径配置
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"."
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
配置完成之后,可以用过以下方式验证是否安装和配置成功,打开命令提示符(开始-运行-cmd)输入javac以及java vesion
若显示java的版本信息而没有显示“该命令不是内部或外部命令”就成功了!
第一个Java程序
下面我们来认个眼熟,看看最简单的Java程序长什么样子!
/*
*第一个Java程序
*/
public class Main{public static void main(String[] args) {System.out.println("Hi www.csdn.com");}
}
首先我们看到输出这个字符串的语句是一个System.out.println的语句,其实我们可以修改这个语句中双引号里的内容,修改什么就会输出什么,也就是说这个是个输出语句,我们只要把想输出的信息放到这个语句后面的双引号里就可以输出,大家可以多多尝试。
其次,我们看到println这个语句又在一个public static void main的小括号括着,这个是个叫main的方法,它是程序的入口点,也就是说全部的代码从这里开始执行,pirntln则是这个方法中的唯一一条语句,而main方法前面的public static表示这个main方法是一个公开访问的静态方法。
然后接着再往外层看,public static void main这个函数又在public class Main这个小括号的里面,public class Main则是一个类,同样public表示这个类的访问权限是公开的,class是一个关键字表示类,后面Main是类名。
Java标识符与关键字
与其他语言类似,Java语言也需要标识符和关键字作为Java语法的支撑。
标识符
Java中标识符是为方法、变量或其他用户定义项所定义的名称。在 Java 语言中,标识符的组成规则如下:
标识符由数字(0~9)和字母(A~Z和a~z)、美元符号($)、下划线(_)以及Unicode字符集中符号大于0xC0的所有符号组合构成(各符号之间没有空格)。并且标识符的第一个符号只能为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。
此外,Java严格区分大小写,比如DOTcpp和dotcpp是两个不同的标识符。
标识符分为两类,分别为关键字和用户自定义标识符。
关键字是有特殊含义的标识符,例如true、false表示逻辑的真假。
用户自定义标识符是由用户按标识符构成规则生成的非保留字的标识符,比如定义变量时候dotcpp就是一个标识符。
提示:使用标识符时一定要注意,或者使用关键字,或者使用自定义的非关键字标识符。此外,标识符可以包含关键字,但不能与关键字重名。
例如以下合法与不合法标识符。
合法标识符:date、$2011、_date、D_$date等。
不合法的标识符:123.com、9com、for、if等。
标识符用来命名常量、变量、类和类的对象等。因此,一个良好的编程习惯要求命名标识符时,应赋予它一个有意义或有用途的名字。
关键字
关键字(或者保留字)是对编译器有特殊意义的固定单词,不能在程序中做其他目的使用。关键字具有专门的意义和用途,和自定义的标识符不同,不能当作一般的标识符来使用。
Java的关键字对Java编译器有特殊的意义,它们用来表示一种数据类型,或者表示程序的结构等。保留字是为Java预留的关键字,它们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
Java语言目前定义了51个关键字,这些关键字不能作为变量名、类名和方法名来使用,以下对这些关键字进行了分类。
数据类型:boolean、int、long、short、byte、float、double、char、class、interface。
流程控制:if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。
修饰符:public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。
动作:package、import、throw、throws、extends、implements、this、supper、instanceof、new。
保留字:true、false、null、goto、const。
需要注意的是,由于Java区分大小写,因此public是关键字,而Public则不是关键字。但是为了程序的清晰及可读性,要尽量避免使用关键字的其他形式来命名,防止代码出现意外,也提高代码的可读性。
Java注释
所谓注释,就是对代码的说明和解释,是给人看的,并不会被编译器按照Java语法处理,因此是可以写汉语可以随意写的,但是需要格式约束,那么它支持以下三种:
1. 行注释
以//开头,表示这一行全部为注释,如:
//今天天气很好
public class Main{
public static void main(String[] args) {System.out.println("Hi www.csdn.com");}
}
2. 段注释
以/*开头,以*/结束,在这之间的都会当做注释看待,适合内容较多、多行显示的注释信息,如:
/*
今天天气很好
太阳当空照
花儿对我笑
*/
public class Main{
public static void main(String[] args) {System.out.println("Hi www.csdn.com");}
}
3. 文档注释
以/**打头,以*/结束,不同于段注释,文档注释会将/**和*/之间的内容归档与javadoc中,在生成Html报告中被识别显示出来,用于记录程序信息,通常对类、方法、模块的开头往往使用文档注释,这其中还支持用@标识出各种标签。
/**
Author:Huang
Data:2021/9/25
*/
public class Main{
public static void main(String[] args) {System.out.println("Hi www.csdn.com");}
}
Java常量
与其他语言一样,Java中也有常量的概念,常量顾名思义是恒定不变的值,他不可以被修改。下面我们来了解一下Java中的各种常量。
常量分类
1. 整型
Java的整型常量值主要有如下 3 种形式。
十进制数形式:如156、-32、0。
八进制数形式:Java中的八进制常数的表示以0开头,如015表示十进制数13,-013表示十进制数-11。
十六进制数形式:Java中的十六进制常数的表示以0x或0X开头,如0x100表示十进制数256,-0x16表示十进制数-22。
整型(int)常量默认在内存中占32位,是具有整数类型的值,当运算过程中所需值超过32位长度时,可以把它表示为长整型(long)数值。在一些教材或题目中,有时长整型类型则要在数字后面加L,如235L,表示一个长整型数,它在内存中占64位。
2. 实数
Java的实型常量值主要有如下两种形式。
十进制数形式:由数字和小数点组成,且必须有小数点,如23.4、-110.0。
科学记数法形式:如1.68e10或3&E5,其中e或E之前必须有数字,且e或E之后的数字必须为整数。Java实型常量默认在内存中占64位,是具有双精度型(double)的值。如果考虑需要节省运行的系统资源,而运算时的数据值取值范围并不大且运算精度要求不高的情况,可以把它表示为单精度型(float)的数值。单精度型数值一般要在该常数后面加F或f,如69.7f,表示一个float型实数,它在内存中占32位(取决于系统的版本高低)。
3. 布尔类型
Java中的布尔型常量只有两个值,即true(真)和false(假)。
4. 字符型和字符串常量值
Java的字符型常量值是用单引号引起来的一个字符,如'a'、'A'。需要注意的是,Java字符串常量值中的单引号和双引号不可混用。双引号用来表示字符串,像"123"、"dotcpp"等都是表示单个字符的字符串。
5. 转义字符
除了以上所述形式的字符常量值之外,Java还使用一种特殊形式的字符常量值来表示一些难以用字符显示的字符,这种特殊形式的字符是以\开头的字符序列,称为转义字符。
常见转义字符表如下:
转义字符 | 说明 |
\uxxxx | 1~4 位十六进制数所表示的字 |
\' | 单引号字符 |
\" | 双引号字符 |
\\ | 双斜杠字符 |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\t | 缩进、制表符 |
本节内容理解即可,无需死记硬背,常量的概念理解之后,在后续的编码过程中如赋值、加减乘除计算时候的数值都是常量,随着我们编码量的增大,自然就会对常量有更深的了解,因此大家不必过度担忧。
Java变量的定义和使用
Java语言中的变量必须先定义再使用,定义变量的一般方式为:
类型 变量名;
类型包括int、short、char等等很多,都是固定的(我们将会在下一节进行详细介绍),我们根据实际情况需要选择什么类型,不同的类型表示了变量的占位大小,并且有对应的数据范围。而变量名则是我们用户自己起的名字,可以由我们程序员命名,但为了不引起冲突,这个名字遵循标识符的要求,即:
1)首字符必须是字母、下划线(_)、美元符号($)或者人民币符号(¥)。
2)标识符由数字(0~9)、大写字母(A~Z)、小写字母(a~z)、下划线(_)、美元符号($)、人民币符号(¥)以及所有在十六进制0xc0前的ASCII码组成。
3)不能与关键字、保留字重名。
4)标识符的长度没有限制。
5)标识符区分大小写。
下面我们可以尝试定义一个如整型的变量,如下:
int number;
即整型的变量关键字int空格number,其中number为我们自己起的名字,注意后面要英文分号结束,大家可以亲自上机尝试定义其他变量。
很明显的,如果我们起的变量名叫char,如:
int char;
很明显,这是错误的,因为它与标识符重名了。
变量的赋值与初始化
在Java中,变量的赋值有两种,第一种是在变量定义的时候进行赋值,这种也叫做初始化,第二种是单独一条赋值语句进行赋值,赋值使用赋值运算符(=)进行。
如上面的变量number我们可以如下进行赋值:
int number=2020; //定义的同时进行初始化为2020
也可以:
int number; //仅定义number变量,未赋值,默认为0
number=2021; //单独一条语句进行赋值为2021
请大家分别尝试这两种方式。
另外,Java允许同时定义多个同类型的变量并进行多个变量的初始化操作,如:
int number1=1999,number2=2000,number3=2049;
这种方式也是可以的,大家根据实际情况使用,需要注意变量一定赋值了再使用,不然变量本身的数没有意义,会得不到想要的结果。
希望大家理解的基础上多多练习。
相关文章:

Java 入门
目录 Java简介 Java JDK开发环境配置 第一个Java程序 Java标识符与关键字 Java注释 Java常量 Java变量的定义和使用 Java简介 Java简介: Java是由Sun Microsystems公司于1995年推出的一门面向对象的高级程序设计语言,可以运行于多个平台,其…...

JVM基本结构和垃圾回收机制
一、JVM基本结构 Java虚拟机(JVM, Java Virtual Machine)是Java程序执行的环境,其基本结构可以分为以下几个主要部分: 类加载器子系统(Class Loader Subsystem): 负责加载Java类文件到内存中。…...

CentOS 7 安装 ntp,自动校准系统时间
1、安装 ntp yum install ntp 安装好后,ntp 会自动注册成为服务,服务名称为 ntpd 2、查看当前 ntpd 服务的状态 systemctl status ntpd 3、启动 ntpd 服务、查看 ntpd 服务的状态 systemctl start ntpdsystemctl status ntpd 4、设置 ntpd 服务开机启…...

Spring Boot 配置文件启动加载顺序
前言 Spring Boot的启动加载顺序是一个涉及多个步骤和组件的过程。Spring Boot通过一系列默认设置简化了应用程序的配置,使得开发者能够快速地搭建和部署应用。为了实现这一目标,Spring Boot采用了一种分层和优先级机制来加载配置文件。 一、Spring Bo…...

webrtc agc2实现原理
WebRTC的AGC2(自适应增益控制器)是一种用于音频处理的算法,可以根据输入信号的强度自动调整增益,使输出信号的音量保持稳定。其详细原理如下: 噪声估计 首先,AGC2需要对输入信号中的噪声进行估计ÿ…...

2024.11.03 周报
一 实时超分音频同步问题: 处理方向: 按照胡学长的办法尝试: 前面处理视频, 将视频中音频提取出来, 将音频每隔 1-2 秒保存为一段 (这样将音频缓存在内存中) , 然后依次播放, 但是音频是44.1KHz采样率,每秒44100次的频率. 每次间隔中程序处理的极短时间…...

Oceanbase学习之一迁移mysql数据到oceanbase
一、数据库环境 #mysql环境 root192.168.150.162 20:28: [(none)]> select version(); ---------- | version() | ---------- | 8.0.26 | ---------- 1 row in set (0.00 sec) root192.168.150.162 20:28: [(none)]> show variables like ‘%char%’; ---…...

Milvus - GPU 索引类型及其应用场景
1. 背景概述 Milvus 是一款高效的矢量数据库管理系统,支持在高并发和高调用场景下加速相似度搜索。Milvus 的 GPU 支持由 NvidiaRAPIDS 团队提供,可以借助各种 GPU 索引类型来优化性能。本篇将重点解析 Milvus 支持的 GPU 索引类型、适用场景及各自的性…...

Webserver(2.8)守护进程
目录 守护进程案例 守护进程案例 每隔2s获取系统时间,将这个时间写入到磁盘文件中 #include<stdio.h> #include<sys/stat.h> #include<sys/types.h> #include<unistd.h> #include<fcntl.h> #include<sys/time.h> #include<…...

HarmonyOS :
HarmonyOS 移动应用开发 什么是HarmonyOS?: 官方解释:HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。 鸿蒙操作系统在传统的单设备系统能力的基础上,提出了基于同一套系统能力、适配多种终端形态的分布式理念&#…...

C# EF 使用
WPF EF MySQL - - -版本.NET Framework4.7.2EntityFramework6.5.1MySql.Data.EntityFramework9.1.0 创建数据库 ccApp.config <connectionStrings><add name"MyDbContext" providerName"MySql.Data.MySqlClient" connectionString"server…...

简介Voronoi图Voronoi Diagrams
这是计算机的经典算法。 问题引入 倘若一张大白纸上有很多三角点,掉进去一个五星点,问,哪个三角离着五星最近?简单,算距离呗,这个五星到其他所有三角点的距离,找到最小的那个就行。 若掉进去…...

硬件测试工程师之EMC项目-辐射抗扰度试验(RS)测试标准解析思维导图
1:链接上一篇文章 硬件测试工程师之EMC项目-电磁干扰-谐波测试标准解析 2:总结思维导图并进行深入解析EMC-辐射抗扰度测试项目 附上相关报告文档以及图片解析。 3:以下为思维导图大致展示,后续可可方便观看。如有需要也可以下载。 本期先…...

H265编码丢帧问题分析
问题 通过海思芯片编码后,将编码的数据通过UDP网口发送到UDP 服务端,UDP服务端收到后保存成文件。 保存的文件有时候用VLC软件可以打开。有时候不能打开,同时用Elecard HEVC Analyer工具打开,发现VLC不能打开时丢帧。如下图,实际为858帧,而此处只有846帧。 分析 UDP包…...

CentOS Linux教程(12)--常用编辑器
文章目录 1. 背景2. nano编辑器2.1 检查安装2.2 安装nano2.3 使用nano 3. emacs编辑器3.1 检查安装3.2 安装emacs 3.3 使用emacs 1. 背景 我们经常需要编辑文件内容,windows上这个工作可以用记事本来做。 linux上对应的,我们可以使用nano或者emacs编辑…...

【浏览器学习笔记】-- 浏览器检查jQuery是否加载
环境:最近做爬虫实验,需要用到上下文http数据请求,为了能够兼容上下文环境,因此采用就jQuery请求,请求前需要加查是否有JQuery加载成功。 浏览器F12,打开浏览器控制台,复制粘贴以下代码&#x…...

大模型的提示学习
文章目录 人工提示设计自动提示设计经过预训练、指令微调和人类对齐后,我们接下来讨论如何通过提示学习方法来有效地使用大语言模型解决实际任务。目前常用的方法是设计合适的提示(Prompting),通过自然语言接口与大模型进行交互。在现有研究中,任务提示的设计主要依靠人工…...

2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
基于matlab-GUI的脉冲响应不变法实现音频滤波功能,输入加噪信号,通过巴特沃斯模拟滤波器脉冲响应不变法进行降噪。效果较好。程序已调通,可直接运行。 下载源程序请点链接:2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能…...

鸿蒙移动应用开发-------前篇
一. 鸿蒙的起源 2012年,华为公司开始规划自己的操作系统,名为’鸿蒙‘。 2018年8月24日,华为公司向国家知识产权商标局申请了’华为鸿蒙‘商标,注册公告日期是2019年5月14日,专用权限期是从2019年5月14日到2029年5月…...

ROS(Robot Operating System)中,编写一个记录机器人速度并将其转换成轨迹
在ROS(Robot Operating System)中,编写一个记录机器人速度并将其转换成轨迹的类涉及到几个步骤。以下是一个简单的示例,展示了如何创建这样一个类,并将其放置在一个自定义的命名空间中。这个类将订阅机器人的速度信息&…...

了解bootstrap改造asp.net core MVC的样式模板
我们都知道,在使用默认的asp.net core MVC模板建立项目的时候,里面的样式是已经事先被写好了的。一般来说都在css目录下的site.css和bootstrap.css及下面的bootstrap.min.css中。我们打开bootstrap这些样式文件,里面有大量的样式类的定义&…...

【C++】对左值引用右值引用的深入理解(右值引用与移动语义)
🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C系列》《Linux系列》 ⛰️ 天高地阔,欲往观之。 目录 前言:对引用的底层理解 一、左值与右值 提问:左值在左,右值在右?…...

寻找符合要求的最长子串
题目描述 给定一个字符串 s s s ,找出这样一个子串: 1)该子串中的任意一个字符最多出现2次; 2)该子串不包含指定某个字符; 请你找出满足该条件的最长子串的长度。 输入描述: 第一行为要求…...

【vim文本编辑器gcc编译器gdb调试器】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、vimvim安装vim常用快捷键vim使用vimtutor zh文档 二、gcc编译器安装gcc工具编译源代码 三、gdb调试器gdb安装gdb常用指令gdb简单上手使用gdb的单步调试功能 总结…...

解决使用Golang的email库发送qq邮件报错short response,错误类型为textproto.ProtocolError
问题阐述 使用email库发送QQ邮件,采用465端口: package mainimport ("fmt""net/smtp""github.com/jordan-wright/email" )func SendEmail(sendTo string, subject string, body string) (err error) {e : email.NewEmai…...

为什么说高级工程师研究的不仅是器件的稳态,模拟器件的开关过程
高级工程师研究器件的开关过程而不仅仅是稳态,主要有以下几个原因: 1. 动态性能优化:开关过程中的特性,如上升时间、下降时间、过冲、振铃等,直接影响系统的性能。了解和优化这些动态特性对于提高系统的速度、精度和稳…...

Matlab实现白鲸优化算法(BWO)求解路径规划问题
目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 白鲸优化算法(BWO)是一种受自然界白鲸捕食行为启发的新型优化算法,它通过模拟白鲸的群体捕猎策略和社会互动来探索问题的最优解。BWO因其强大的全局搜索能力和高效的局部搜索能…...

SQLserver索引的优化和使用
在SQL Server中,索引的优化和有效使用是提高查询性能的关键。以下是一些详细的步骤和最佳实践,帮助你优化和使用索引。 1. 理解索引类型 聚集索引(Clustered Index) 定义:表中数据的物理排序顺序与索引的逻辑顺序相…...

Linux 安装nacos
1.下载版本 https://github.com/alibaba/nacos/tags 2.解压压缩包,启动 (1)将压缩包放到/usr/local目录下,解压 tar -xvf nacos-server-2.0.0-BETA.tar.gz(2)删除压缩包 rm -f nacos-server-2.0.0-BETA.tar.gz(3) 找到nacos的mysql的数据库脚本,在数…...

水仙花判断
一个三位整数,如果满足条件:个位数的立方十位数立方百位数立方这个数,那么称之为“水仙花数” 编程判断一个三位整数是不是水仙花数。 输入格式: 输入一个三位整数 输出格式: 是则输出YES,不是输出 NO (注意是大写字母…...