Java基础(一)--语法入门

news2025/5/26 6:35:09

文章目录

  • 第一章、语法入门
    • 一、Java简介
      • 1、JVM
      • 2、Java程序执行过程
      • 3、JDK
      • 4、JRE
      • 5、JDK、JRE和JVM三者关系
    • 二、Java常量与变量
      • 1、标识符
      • 2、关键字
      • 3、保留字
      • 4、变量
      • 5、数据类型
      • 6、常量
    • 三、运算符
      • 1、算术运算符
      • 2、赋值运算符
      • 3、关系运算符
      • 4、逻辑运算符
      • 5、条件运算符
      • 6、运算符的优先级
    • 四、流程控制语句
      • 1、选择结构
        • 1)if-else语句:
        • 2)switch结构
      • 2、循环结构
        • 1)while循环
        • 2)do-while循环
        • 3)for循环
        • 4)循环嵌套
        • 5)break语句和continue语句
    • 五、数组
      • 1、一维数组
      • 2、增强型for循环
      • 3、冒泡排序
      • 4、二维数组
    • 六、方法
      • 1、方法声明
      • 2、方法分类
      • 3、方法重载
      • 4、方法参数传递问题
      • 5、可变参数列表

第一章、语法入门

一、Java简介

Java是一门面向对象的程序设计语言。
1995年由sun公司发布。
2010年sun公司被Oracle公司收购,然后发布了java8版本。

1、JVM

JVM(Java Virtual Machine)Java虚拟机。
JVM是Java平台无关性实现的关键所在。

2、Java程序执行过程

program.java源文件
compiler编译器
program.class字节码文件
interpreter解码器
program

3、JDK

JDK(Java Development Kit)Java语言的软件开发包。
两个主要组件:

  • javac --编译器,将源程序转成字节码
  • java --运行编译后的java程序(.class文件)

4、JRE

JRE(Java Runtime Environment)
包括Java虚拟机(JVM)、Java核心类库和支持文件。
如果只需要运行Java程序,下载并安装JRE即可
如果开发Java软件,需要下载JDK
在JDK中附带有JRE

5、JDK、JRE和JVM三者关系

在这里插入图片描述

二、Java常量与变量

1、标识符

Java 中标识符是为方法、变量或其他用户定义项所定义的名称。

标识符命名规则

标识符可以由字母、数字、下划线(_)和美元符($)组成,不 能以数字开头。
标识符严格区分大小写。
标识符不能是Java关键字和保留字。
标识符的命名最好能反映出其作用。

2、关键字

Java中的关键字是有对编译器有特殊意义的词,比如class是用来定义类的关键字,编译器遇到class就知道这是定义了一个类。

abstractbooleanbreakbytecasecatch
charclasscontinuedefaultdodouble
elseextendsfalsefinalfinallyfloat
forifimplementsimportnativeint
interfacelonginstanceofnewnullpackage
privateprotectedpublicreturnshortstatic
superswitchsynchronizedthisthrowthrows
transienttruetryvoidvolatilewhile

3、保留字

Java现有版本中没有特殊含义,以后版本可能会作为有特殊含义的词,或者该词虽然在Java中没有特殊含义,以后版本也不打算使用,但在其它语言中有特殊含义,不宜在Java中定义为变量名称等,因为容易混淆。
如:goto、const

4、变量

变量是程序当中数据的临时存放场所,变量存储在内存当中。
变量的三个元素:变量类型(数据类型)、变量名和变量值。
变量声明格式:数据类型 变量名 = 变量值;
如:int n = 10;

变量名的命名规则
满足标识符命名规则。
符合驼峰法命名规范。
尽量简单,做到见名知意。
变量名的长度没有限制。

类的命名规则
满足Pascal命名法规范,单词首字母大写,如果是多个单词拼接而成的,每个单词首字母都大写。

5、数据类型

- 数据类型
	- 基本数据类型
		- 数值型
			- 整数类型
				- byte(1字节,8位)--字节型
				- short(2字节)--短整型
				- int(4字节)--整型,整数默认情况是int类型
				- long(8字节)--长整型,整数值后面加  L 或 l 表示长整型,如456L
			- 浮点类型
				- float(4字节)--单精度浮点型,浮点数值后面加 f 或 F ,如:23.3f
				- double(8字节)--双精度浮点型,浮点数默认情况下是double类型,也可以在值后面加 d 或 D ,如:123.45d
		- 字符型
			- char(2字节)--字符型字面值用单引号内的单个字符表示,如:char a = 'a'
		- 布尔型
			- boolean(1字节)--布尔值只能定义为 true 和 false
	- 引用数据类型
		- 类
			- class	
		- 接口
			- interface
		- 数组 

转义字符
\uxxxx --四位16进制数所表示的字符
’ --单引号字符
‘’ --双引号字符
\ --反斜杠字符
\r --回车
\n --换行
\t --横向跳格
\b --退格

类型转换
类型转换分为自动类型转换和强制类型转换。
自动类型转换顺序:

可能精度丢失
可能精度丢失
可能精度丢失
char
byte
short
int
long
float
double

强制类型转换:如果A类型的数据表示范围比B类型大,则将A类型的值赋值给 B类型,需要强制类型转换。如:
double d=123.4;
float f=(float)d;

6、常量

在变量定义的前面加final 关键字,常量名一般大写,且值不可更改。如:
final double PI = 3.14;

三、运算符

1、算术运算符

算术运算符名称举例
+加法5+10=15
-减法10-5=5
*乘法3*6=18
/除法36/4=9
%求余数13%3=1
++自增1int n=3;n++
- -自减1int n=3;n- -

自增自减运算符
n1 = 1

表达式执行方式结果
n2 = ++n1;n1 = n1 + 1; n2 = n1;n1 = 2; n2 = 2;
n2 = n1++;n2 = n1; n1 = n1 + 1;n1 = 2; n2 = 1;
n2 = - -n1;n1 = n1 - 1; n2 = n1;n1 = 0; n2 = 0;
n2 = n1- -;n2 = n1; n1 = n1 - 1;n1 = 0; n2 = 1;

2、赋值运算符

格式:变量=表达式;
例:int n=3; //将3赋值给变量n
注意:赋值运算符是从右往左运算,赋值运算符的左边不能是常量。

复合赋值运算符

运算符表达式结果(假设x=15)
+=x+=520
-=x-=510
*=x*=575
/=x/=53
%=x%=50

3、关系运算符

比较运算符用于判断两个数据的大小,如大于
比较的结果是一个布尔值

运算符名称表达式结果
大于5>3true
<小于5 < 3false
>=大于等于5>=3true
<=小于等于5<=3false
==等于5==3false
!=不等于5!=3true

4、逻辑运算符

逻辑“与”运算符
表达式1 &&(或&)表达式2

表达式1表达式2结果
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

注:&&运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算了。

逻辑“或”运算符
表达式1 ||(或|)表达式2

表达式1表达式2结果
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

注:||运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算了。

逻辑“非”运算符
!运算符
对原条件进行取反
例:!(3<5),结果为false

5、条件运算符

Java中的条件运算符是三目运算符。
语法:
布尔表达式?表达式1:表达式2
当布尔表达式的值为true,则返回表达式1的值,否则返回表达式2的值。

6、运算符的优先级

从上到下优先级从高到低:

运算符描述
()圆括号
!,++,–逻辑非,自增,自减
*,/,%乘法,除法,取余
+,-加法,减法
<,<=,>,>=小于,小于等于,大于,大于等于
==,!=等于,不等于
&&逻辑与
||逻辑或
=,+=,*=,/=,%=,-=赋值运算符,复合赋值运算符

四、流程控制语句

三大流程控制语句:顺序、选择、循环

1、选择结构

1)if-else语句:
if(条件)
	语句; //单行语句可不加大括号

if(条件){
	语句;
}

if(条件)
	语句1;
else
	语句2

if(条件){
	语句1;
}else{
	语句2;

多重if结构

if(表达式1)
	语句1; 
else if(表达式2)
	语句2; 
else if(表达式3)
	语句3;else
	语句n;

嵌套if结构

if(表达式1)
	if(表达式2)
		if(表达式3) 
			语句;
else 
	语句;
2)switch结构
switch(表达式){
	case 常量表达式1:
		语句1;break;
	case 常量表达式2:
		语句2;break;
	case 常量表达式3:
		语句3;break;
		...
	default:
		语句n;
}

if和switch的区别
if结构:
-判断条件是布尔类型
-判断条件是一个范围
switch结构:
-判断条件是常量值

2、循环结构

1)while循环

语法格式:

while(循环条件) { 
	语句;

举例:

int n=1; // n的值必须先进行初始化
while(n<5)//输出n的值
	n++; // 循环变量n的值必须被改变

注:
为了避免死循环,小括号后面不要加分号。

2)do-while循环

语法格式:

do { 
	语句;while(循环条件);

举例:

int n=1; 
do//输出n的值
	n++;while(n<5);

注意:
do-while循环至少执行一次。
循环条件后的分号不能丢。

3)for循环

语法格式:

for(表达式1;表达式2;表达式3) {
	语句;

举例:

for(int n=1;n<5;n++)//输出语句; 

注:
三个表达式都是可以省略的,如:

int n=1;
for(;;)if(n==5)break;
	//输出语句;
	n++;
4)循环嵌套
while(循环条件) { 
	……. 
	while(循环条件){ 
		……. 
	} 
	…….
do { 
	……. 
	while(循环条件){ 
		……. 
	} 
	…….while(循环条件);
for(表达式1;表达式2;表达式3) { 
	……. 
	for(表达式1;表达式2;表达式3){ 
		……. 
	} 
	…….
5)break语句和continue语句

break语句:
break语句可以结束当前循环的执行。
执行完break语句后,循环体体中位于break语句后面的语句就不会被执行。
在多重循环中,break语句只会向外跳一层。

continue语句:
continue语句只能用在循环里。
continue语句可以结束当前循环的执行,但是要继续下一次循环的执行。

五、数组

1、一维数组

什么是数组
数组是相同类型的数据按顺序组成的一种引用数据类型。

数组声明
语法格式:
数据类型[] 数组名;
数据类型 数组名[];
如:
int[] array1;
int array2[];

数组创建

语法格式一:先声明后创建
数据类型[] 数组名;
数组名 = new 数据类型[数组长度];
如:
int[] arr;
arr=new int[10];
创建一个长度为10的整型数组。

语法格式二:声明的同时创建数组
数据类型[] 数组名 = new 数据类型[数组长度];
如:
int[] arr=new int[10];
创建长度为10的整型数组arr。
注意:数组长度必须指定。

数组的初始化
声明数组的同时给数组赋值,叫做数组的初始化。
如:
int[] arr={1,2,3,4,5,6,7,8,9,10};
数组的长度就是初始化时所给数组元素的个数。

数组元素及长度
语法格式:
数组名[下标];
注意:下标从0开始。
属性length表示数组的长度,如a.length。

2、增强型for循环

又叫foreach循环。
foreach循环应用:
int[] arr={1,2,3,4,5};
for(int n:arr) {
System.out.println(n);
}

3、冒泡排序

思路:
比较相邻的元素,如果前一个比后一个大,交换之。
第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
第二趟将第二大的数移动至倒数第二位

因此需要n-1趟
代码:

int[] ages= {21,27,31,19,50,32,16,25};
//控制比较轮数
for(int i=0;i<ages.length-1;i++) {
	//每轮比较多少
	for(int j=0;j<ages.length-i-1;j++) {
		if(ages[j]>ages[j+1]) {
			int tmp=0;
			tmp=ages[j];
			ages[j]=ages[j+1];
			ages[j+1]=tmp;					
		}
	}
}

4、二维数组

二维数组也是存放相同数据类型的数据,可以看成是由多个一维数组组
成。
比如,我们可以把几个学生的成绩存放到二维数组中。学生成绩如表所示。成绩就可以存储到二维数组中。因此,二维数组可以包含行和列,和表格很相似。而每一行就是一个一维数组。

数学语文英语
张三899293
李四859096
王五959398

二维数组的声明
二维数组的声明有三种形式,格式如下:
数据类型[][] 数组名;
数据类型 数组名[][];
数据类型[] 数组名[];
如:

int[][] intArray; 
float floatArray[][]; 
double[] doubleArray[]; 

二维数组的创建
数组名=new 数据类型[行][列];
如:
先声明,后创建:

int[][] intArray;
intArray=new int[3][3]; 

声明数组的同时创建:

int[][] intArray=intArray=new int[3][3]; 

创建数组的时候,可以只指定行数:

float[][] floatArray=new float[3][]; 

这时候列数并没有指定,每行相当于一个一维数组,需要分别创建。

floatArray[0]=new float[3];//第一行有三列
floatArray[1]=new float[4];//第二行有四列
floatArray[2]=new float[5];//第三行有5列

每一行的数据数量是可以不相同的。

数组元素的引用
与一维数组相似,行列的index值均从0开始。
如:
已知一个三行三列的整型二维数组intArray,它的第三行第二列元素
表示为intArray[2][1]。

二维数组的初始化
与一维数组类似,创建的同时为数组元素赋值,即为数组的初始化。
如:

int[][] num={{1,2,3},{4,5,6},{7,8,9}}; 

num[1][2]的值为6。

数组的遍历
循环输出二维数组的内容,代码如下:

//初始化一个二维数组
int[][] num1={{78,98},{65,75,63},{98}}; 
//循环输出二维数组的内容
for(int i=0;i<num1.length;i++){ 
	for(int j=0;j<num1[i].length;j++){ 
		System.out.print(num1[i][j]+" ");
	} 
	System.out.println(); 
} 

六、方法

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

1、方法声明

语法格式:

访问修饰符 返回类型 方法名(参数列表){ 
	方法体 
}

2、方法分类

根据方法是否带参数、是否返回值,可分为四类:

  • 无参无返回值方法
  • 无参带返回值方法
  • 带参无返回值方法
  • 带参带返回值方法

3、方法重载

方法名相同,参数列表不同。
参数列表不同包括,参数的个数和类型不同。如果只有参数名不同,不能算作方法重载。

如下三个方法是重载方法,它们的参数列表都是不同的。
public void display(){}
public void display(int n){}
public void display(float n){}

如下两个方法不是重载方法,两个方法只是参数名不同,不满足方法重载条件。
public void display(int n){}
public void display(int d){}

4、方法参数传递问题

基本数据类型变量传递的是值,实际参数变量的值是不会跟方法内部形式参数的值改变而改变的。

引用类型变量传递的是引用,实际参数变量的值会跟着方法内部形式参数的值变化而变化,因为引用指向的内存都是一样的。

5、可变参数列表

如:

public void sum(int... n){}
  1. 可变参数列表作为参数,方法调用时可以传入0个或多个参数,传入数组也可以。数组作为方法参数,方法调用时只能传入数组。
  2. 可变参数列表作为方法参数时,如果有多个参数,可变参数列表只能放到最后一个位置,而且不能有多个可变参数列表作为方法参数。而数组没有这个限制。
  3. 可变参数的底层实现就是数组。
  4. 可变参数列表所在方法被重载时是最后被访问的。
  5. 当传入方法的参数数量不确定的时候,可以考虑使用可变参数列表。

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

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

相关文章

全国各省环境规制强度数据(2004-2022年)

01、数据简介 以保护环境为目的&#xff0c;对各种环境污染行为进行规制&#xff0c;政府相关政策规制&#xff0c;是社会性规制的重要内容&#xff0c;包含大气、水、废弃物、噪声污染等外部行为&#xff0c;对这些行为进行规制就是要将整个社会为其承担的成本转化为其自身承…

funasr 麦克风实时流语音识别

参考: https://github.com/alibaba-damo-academy/FunASR chunk_size 是用于流式传输延迟的配置。[0,10,5] 表示实时显示的粒度为 1060=600 毫秒,并且预测的向前信息为 560=300 毫秒。每个推理输入为 600 毫秒(采样点为 16000*0.6=960),输出为相应的文本。对于最后一个语音…

根据状态转移图实现时序电路

描述 某同步时序电路的状态转换图如下&#xff0c;→上表示“C/Y”&#xff0c;圆圈内为现态&#xff0c;→指向次态。 请使用D触发器和必要的逻辑门实现此同步时序电路&#xff0c;用Verilog语言描述。 如图所示&#xff1a; 电路的接口如下图所示&#xff0c;C是单bit数据…

MySQL基础入门上篇

MySQL基础 介绍 mysql -uroot -p -h127.0.0.1 -P3306项目设计 具备数据库一定的设计能力和操作数据的能力。 数据库设计DDL 定义 操作 显示所有数据库 show databases;创建数据库 create database db02;数据库名唯一&#xff0c;不能重复。 查询是否创建成功 加入一些…

文本检索粗读

一.前情提要 1.本文理论为主&#xff0c;并且仅为个人理解&#xff0c;能力一般&#xff0c;不喜勿喷 2.本文理论知识较为散碎 3.如有需要&#xff0c;以下是原文&#xff0c;更为完备 Neural Corpus Indexer 文档检索【论文精读47】_哔哩哔哩_bilibili 二.正文 &#xf…

重大璧山院_APP_apk_安卓端下载

主要是方便去重庆大学璧山研究院搞科研的学生&#xff0c; 这个安卓安装包&#xff0c;在网上很难搜到。 找半天才搞到手、蓝奏云下载 https://wwb.lanzn.com/iqnro1v1bwkh 密码:i3n2

防止邮箱发信泄露服务器IP教程

使用QQ邮箱,网易邮箱,189邮箱,新浪邮箱,139邮箱可能会泄露自己的服务器IP。 泄露原理&#xff1a;服务器通过请求登录SMTP邮箱服务器接口&#xff0c;对指定的收件人发送信息。 建议大家使用商业版的邮箱&#xff0c;比如阿里云邮箱发信等 防止邮件发信漏源主要关注的是确保邮件…

C语言 数据输入输出

本文 我们来说 数据的输入与输出 及数据的运算 在程序的运算工程中 往往需要输入一些数据 而程序的运算 所得到的运算结果又需要输出给用户 因此 数据的输入与输出 就显得非常重要 在C语言中 不提供专门的输入输出语句 所有的输入输出 都是通过对标准库的调用 来实现的 一般 …

权威Scrum敏捷开发企业级实训/敏捷开发培训课程

课程简介 Scrum是目前运用最为广泛的敏捷开发方法&#xff0c;是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程&#xff0c;面向研发管理者、项目经理、产品经理、研发团队等&#xff0c;旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

抖音滑块验证码加密的盐的位置

最近更新后之前很容易找到盐的位置的方法变了&#xff0c;抖音特意把盐隐藏起来了 {"reply": "RJC","models": "yAd8rl","in_modal": "DTn0nD2","in_slide": "ou7H0Ngda","move": …

基于java+springboot+vue实现的网上购物系统(文末源码+Lw+ppt)23-42

摘 要 随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;网上购物系统展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;为…

走进MySQL:从认识到入门(针对初学者)

一&#xff0c;引言 MySQL是一款久负盛名且广泛应用的关系型数据库管理系统&#xff0c;自1995年Michael Widenius和David Axmark在瑞典和芬兰发起研发以来&#xff0c;其发展历程可谓辉煌且深远。作为开源软件的代表&#xff0c;MySQL以其卓越的成本效益、高性能及高可靠性赢得…

【数据结构与算法】:二叉树经典OJ

目录 1. 二叉树的前序遍历 (中&#xff0c;后序类似)2. 二叉树的最大深度3. 平衡二叉树4. 二叉树遍历 1. 二叉树的前序遍历 (中&#xff0c;后序类似) 这道题的意思是对二叉树进行前序遍历&#xff0c;把每个结点的值都存入一个数组中&#xff0c;并且返回这个数组。 思路&…

c++11 标准模板(STL)本地化库 - 平面类别(std::codecvt) - 在字符编码间转换,包括 UTF-8、UTF-16、UTF-32 (四)

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 在字符编码间转换&#xff0c;包括 UTF-8、UTF-16、UTF-32 std::…

ReactRouter

React-Router 概念&#xff1a;一个路劲path对应一个组件component 当我们在浏览器中访问一个path的时候&#xff0c;path对应的组件会在页面中进行渲染路由语法&#xff1a; import {createBrowserRouter, RouterProvider} from react-router-dom// 1. 创建router实例对象并…

【数据结构】习题之链表的回文结构和相交链表

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;前路漫漫亦灿灿 前言 今日的习题是关于链表的&#xff0c;分别是链表的回文结构和相交链表的判断。 链表的回文结构 题目为&#xff1a;链表的回文结…

RUM 最佳实践-交互延迟的探索与发现

FID 在互联网高速发展的时代&#xff0c;用户体验已成为企业竞争的关键所在。网页性能作为用户体验的重要组成部分&#xff0c;直接影响着用户的满意度和工作效率。First Input Delay&#xff08;FID&#xff09;作为衡量网页性能的重要指标&#xff0c;越来越受到业界关注。今…

【RV1106的ISP使用记录之二】设备树的构建

基于MIPI接口的两种摄像头接入方式&#xff0c;理清楚各链路关系&#xff0c;方便后续的开发调试工作&#xff0c;先上一张图&#xff0c;后面再补充解释。

一起学习python——基础篇(20)

前言&#xff0c;之前经常从网上找一些免费的接口来测试&#xff0c;有点受制于人的感觉。想了想还不如直接写一个接口&#xff0c;这样方便自己测试。自己想返回什么格式就返回什么样子&#xff0c;不用担心服务报错&#xff0c;因为自己就可以完全掌控。然后宿舍二哥告诉我py…

帝国cms仿《鳄鱼下载站》网站源码

仿《鳄鱼下载站》网站源码手机安卓软件网站模版 PHP网站源码 帝国cms内核 采用帝国cms7.5 环境PHPmysql 恢复数据库后如何修改密码: 双击表&#xff0c;进入对应的详细数据表&#xff0c;然后找到&#xff1a;www_96kaifa_com_enewsuser这个表&#xff0c;双击打开修改&…