第二章 Java编程基础

news2024/11/27 19:54:18

第二章 Java编程基础



目录

  • 一. Java基本语法
    • 1. 基本格式
    • 2. 注释
    • 3. 标识符
    • 4. 关键字
    • 5. 常量
  • 二. 变量
    • 1. 定义
    • 2. 数据类型
    • 3. 整数类型变量
    • 4. 浮点类型变量
    • 5. 字符类型变量
    • 6. 布尔类型变量
    • 7. 类型转换
    • 8. 自动提升
    • 9. 变量作用域
  • 三. 运算符
    • 1. 算数运算符
    • 2. 赋值运算符
    • 3. 比较运算符
    • 4. 逻辑运算符
    • 5. 运算符的优先级
  • 四. 选择结构语句
    • 1. if
    • 2. if…else
    • 3. if…else if…else
    • 4. 三元运算符
    • 5. Switch
  • 五. 循环结构语句
    • 1. While
    • 2. Do…while
    • 3. For
    • 4. 跳转语句
  • 六. 方法
    • 1. 概述
    • 2. 格式
    • 3. 重载
  • 七. 数组
    • 1. 声明方式
    • 2. 不同数据类型的数组元素的默认初始值
    • 3. 静态初始化
    • 4. 遍历
    • 5. 最值
    • 6. 排序



一. Java基本语法

1. 基本格式

Java代码放在一个类中,类使用class关键字定义,在class前面可以有类的修饰符。

修饰符 class 类名{
程序代码
}

Java程序代码分为结构定义语句功能执行语句

结构定义语句用于声明一个类或方法。
功能执行语句用于实现具体的功能。必须用;结束语句。

例如我们在前面一章所写的代码中的System.out.println(“hello world”);

在这里插入图片描述

Java语言严格区分大小写。编写时格式排版没有严格要求,但一个连续的字符串不能分成两行书写,但如果实在是要分行,需要将字符串分成两个字符串,然后用+连接起来。


2. 注释

单行注释 //注释内容
多行注释 /*注释内容*/
文档注释 /**注释内容*/


3. 标识符

  在Java中,包名,类名,方法名,参数名,变量名等,称为标识符。标识符可以由字母、数字、下画线(_)和美元符号($)组成,但标识符不能以数字开头,不能是Java中的关键字。

Java程序标识符命名规则:
·包名的所有字母一律小写。
·类名和接口名每个单词的首字母都要大写。
·常量名的所有字母都要大写,单词之间用下画线连接。
·变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词的首字母大写。


4. 关键字

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


5. 常量

整型常量:二进制(0b或0B开头)、八进制(以0开头)、十进制(除0本身外,开头不能是0)、十六进制(0x或0X开头)。

浮点数常量:单精度浮点数(以f或F结尾)和双精度浮点数(以d或D结尾),若不加任何后缀,默认double。

字符常量:需要用’’括起来。

字符串常量:需要用””括起来。

布尔常量:true和false。

Null常量:null,表示空。


二. 变量

1. 定义

例子:

int x=0,y;
y=x+3;
定义了两个变量x和y,x在定义的同时赋值,y没有初始值。


2. 数据类型

  Java是强类型编程语言,在变量定义时必须声明变量的数据类型。Java中数据类型分为基本数据类型和引用数据类型。

在这里插入图片描述


3. 整数类型变量

在这里插入图片描述

  在为一个long类型的变量赋值时,所赋值的后面要加上字母L(或小写l),说明赋值为long类型。如果赋的值未超出int型的取值范围,则可以省略字母L(或小写l)。


4. 浮点类型变量

在这里插入图片描述

  在Java中,一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时,在所赋值的后面一定要加上字母F(或者小写f),而为double类型的变量赋值时,可以在所赋值的后面加上字母D(或小写d),也可以不加。


5. 字符类型变量

  在Java中,字符类型变量用char表示,用于存储一个单一字符。Java中每个char类型的字符变量都会占用2个字节。在给char类型的变量赋值时,需要用一对英文半角格式的单引号(’ ‘)把字符括起来,如’a’。

例如:

char c = ‘a’; // 为一个char类型的变量赋值字符a
char ch = 97; // 为一个char类型的变量赋值整数97,相当于赋值字符a


6. 布尔类型变量

  在Java中,布尔类型变量只有true和false两个值。


7. 类型转换

  自动类型转换:即隐式类型转换。是指两种数据类型在转换的过程中不需要显示声明,由编译器自动完成。其需同时满足两个条件:两种数据类型彼此兼容,目标类型的取值范围大于源类型的取值范围。

例如:

byte b = 3;
int x = b;

自动转换情况:

(1)整数类型之间可以实现转换。例如,byte类型的数据可以赋值给short、int、long类型的变量;short、char类型的数据可以赋值给int、long类型的变量;int类型的数据可以赋值给long类型的变量。

(2)整数类型转换为float类型。例如,byte、char、short、int类型的数据可以赋值给float类型的变量。

(3)其他类型转换为double类型。例如,byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。

  强制类型转换:即显式类型转换。是指两种数据类型之间的转换需要进行显式声明。当无法进行自动转换时,这时就需要进行强制类型转换。

例如:

public class Example02 {
	public static void main(String[] args) {
		byte a;                // 定义byte类型的变量a
		int b = 298;          // 定义int类型的变量b
		a = (byte) b;
		System.out.println("b=" + b);
		System.out.println("a=" + a);
	}
}

但有时也会有数据精度丢失,

例如:

public class Example02 {
	public static void main(String[] args) {
		byte a;                // 定义byte类型的变量a
		int b = 298;          // 定义int类型的变量b
		a = (byte) b;
		System.out.println("b=" + b);
		System.out.println("a=" + a);
	}
}

当将变量b的类型强转为byte类型后,前面3个高位字节的数据丢失,数值发生改变。

在这里插入图片描述


8. 自动提升

例子:

public class Example03 {
	public static void main(String[] args) {
		byte b1 = 3;	      // 定义一个byte类型的变量
		byte b2 = 4;
		byte b3 = (byte)(b1 + b2);	// 两个byte类型变量相加,赋值给一个byte类型变量
		System.out.println("b3=" + b3);
	}
}

表达式b1+b2运算期间,变量b1和b2都被自动提升为int型,表达式的运算结果也就成了int型,将该结果赋给byte型的变量,需要进行强制类型转换。


9. 变量作用域

  变量定义后,需要在它的作用范围内才可以被使用,这个作用范围被称为变量的作用域。

在这里插入图片描述


三. 运算符

1. 算数运算符

在这里插入图片描述


2. 赋值运算符

在这里插入图片描述

  在使用+=、-=、*=、/=、%= 运算符进行赋值时,强制类型转换会自动完成,程序不需要做任何显式地声明。

例如:

public class Example05 {
	public static void main(String[] args) {
		short s = 3;
		int i = 5;
		s += i;	//强制类型转换自动完成
		System.out.println("s = " + s);
	}
}


3. 比较运算符

在这里插入图片描述


4. 逻辑运算符

在这里插入图片描述

&与&&的区别

public class Example06 {
	public static void main(String[] args) {
		int x = 0; 						// 定义变量x,初始值为0
		int y = 0; 						// 定义变量y,初始值为0
		int z = 0; 						// 定义变量z,初始值为0
		boolean a, b; 					// 定义boolean变量a和b
		a = x > 0 & y++ > 1; 			// 逻辑运算符&对表达式进行运算
		System.out.println(a);
		System.out.println("y = " + y);
		b = x > 0 && z++ > 1; 			// 逻辑运算符&&对表达式进行运算
		System.out.println(b);
		System.out.println("z = " + z);
	}
}

  在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。在使用“&&”进行运算,当左边为false时,右边的表达式就不再进行运算,因此“&&”被称作短路与。

|与||的区别,与&和&&的区别同理。

5. 运算符的优先级

在这里插入图片描述


四. 选择结构语句

1. if

if (条件语句)
{
代码块
}

2. if…else

if (判断条件){
执行语句1

}
else{
执行语句2

}

3. if…else if…else

if (判断条件1) {
执行语句1
}
else if (判断条件2) {
执行语句2
}

else if (判断条件n) {
执行语句n
}
else {
执行语句n+1
}

4. 三元运算符

判断条件 ? 表达式1 : 表达式2
注意:
(1)条件运算符“?”和“:”是一对运算符,不能分开单独使用。
(2)条件运算符的优先级低于关系运算符与算术运算符,但高于赋值运算符。
(3)条件运算符可以进行嵌套,结合方向自右向左。例如,a>b?a:c>d?c:d应该理解为a>b?a:(c>d?c:d),这也是条件运算符的嵌套情形,即三元表达式中的表达式2又是一个三元表达式。


5. Switch

switch (表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
......
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}

  switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,则执行对应case后面的语句;如果没找到任何匹配的值,则执行default后的语句。


五. 循环结构语句

1. While

while(循环条件){
执行语句

}


2. Do…while

do {
执行语句

} while(循环条件);
循环体会无条件执行一次,然后再根据循环条件决定是否继续执行。


3. For

for(初始化表达式; 循环条件; 操作表达式)
{
执行语句

}


4. 跳转语句

Break
  当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作用是跳出循环语句,执行循环后面的代码。
  当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳出外层循环,则需要在外层循环中使用break语句。

Continue
  continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。


六. 方法

1. 概述

  方法就是一段可以重复调用的代码。注意,有些书中也会把方法称为函数。


2. 格式

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,...){
执行语句

return 返回值;
}


3. 重载

即在同一个作用域内方法名相同但参数个数或者参数类型不同的方法。

例子:

public class Example21 {
	public static void main(String[] args) {
		// 下面是针对求和方法的调用
		int sum1 = add(1, 2);
		int sum2 = add(1, 2, 3);
		double sum3 = add(1.2, 2.3);
		// 下面的代码是打印求和的结果
		System.out.println("sum1=" + sum1);
		System.out.println("sum2=" + sum2);
		System.out.println("sum3=" + sum3);
	}
	// 下面的方法实现了两个整数相加
	public static int add(int x, int y) {
		return x + y;
	}
	// 下面的方法实现了三个整数相加
	public static int add(int x, int y, int z) {
		return x + y + z;
	}
	// 下面的方法实现了两个小数相加
	public static double add(double x, double y) {
		return x + y;
	}
}

  上述代码中,定义了三个同名的add()方法,但它们的参数个数或类型不同,从而形成了方法的重载。在main()方法中调用add()方法时,通过传入不同的参数便可以确定调用哪个重载的方法,如add(1,2)调用的是第13~14行代码定义的add()方法。需要注意的是,方法的重载与返回值类型无关。


七. 数组

1. 声明方式

第一种:
数据类型[] 数组名 = null;

第二种:
数据类型[]数组名;
数组名= new数据类型[长度];


2. 不同数据类型的数组元素的默认初始值

在这里插入图片描述


3. 静态初始化

第一种:
类型[] 数组名 = new 类型[]{元素,元素,……};

第二种:
类型[] 数组名 = {元素,元素,元素,……};


4. 遍历

例子:

public class Example27 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5 };          // 定义数组
		// 使用for循环遍历数组的元素
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);        // 通过索引访问元素
		}
	}
}


5. 最值

例子:

public class Example28 {
	public static void main(String[] args) {
		int[] arr = { 4, 1, 6, 3, 9, 8 };  	// 定义一个数组
		int max = getMax(arr);               	// 调用获取元素最大值的方法
		System.out.println("max=" + max); 	// 打印最大值
	}
	static int getMax(int[] arr) {
		int max = arr[0];  // 定义变量max用于记住最大数,首先假设第一个元素为最大值
		// 下面通过一个for循环遍历数组中的元素
		for (int x = 1; x < arr.length; x++) {
			if (arr[x] > max) { 			// 比较 arr[x]的值是否大于max
				max = arr[x];   				// 条件成立,将arr[x]的值赋给max
			}
		}
		return max;              				// 返回最大值max
	}
}


6. 排序


(未完待续……)



本篇博客为本人学习Java时的详细笔记,如有错误之处,还望各位指正。
文章为原创,如要转载请注明出处

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

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

相关文章

【VisualBasicApplication】Excel编程 快速入门

VBAExcel的宏与VBA宏的录制宏的启动运行快捷键运行宏&#xff1a;使用Excel对象运行宏*VBA的数据类型字符串&#xff08;String&#xff09;整形&#xff08;Integer&#xff09;和长整形&#xff08;Long&#xff09;单精度浮点型&#xff08;Single&#xff09;和双精度浮点型…

我应该使用哪个版本的 JDK?

本文在写作过程中参考了whichJDK ​ 要构建和运行 Java 应用程序&#xff0c;就需要安装 JDK 环境。 OpenJDK 是 Java SE 规范的开源软件&#xff0c;但它只是源代码。二进制发行版由不同的供应商提供&#xff0c;适用于许多受支持的平台&#xff0c;这些发行版在许可证、商业…

设计模式 - 创建型模式_7种单例模式实现

文章目录创建型模式概述Case7种单例模式实现静态类使⽤懒汉模式(线程不安全)懒汉模式(线程安全)饿汉模式(线程安全)使⽤类的内部类(线程安全)双重锁校验(线程安全)CAS「AtomicReference」(线程安全)Effective Java作者推荐的枚举单例(线程安全)小结创建型模式 创建型模式提供创…

MySQL约束详解

目录 概念 作用 分类 MySQL约束——主键约束 概念 操作 操作——添加单列主键 操作——添加多列主键&#xff08;联合主键&#xff09; 操作——删除主键约束 MySQL约束-自增长约束(auto_increment) 概念 语法 操作 特点 指定自增字段初始值 delete和truncate在删…

零基础学JavaWeb开发(二十六)之 nginx(2)

5、基于Nginx解决跨域问题 5.1、什么是网站跨域问题 前端部署 html.mayikt.com /index.html 后端部署 api.mayikt.com/ 接口 java 浏览器访问&#xff1a;http://html.mayikt.com/user.html 页面里面 ajax 请求&#xff1a;http://api.mayikt.com/getUser 浏览器访问&#…

力扣刷题记录——697. 数组的度、728. 自除数 、821. 字符的最短距离

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《力扣刷题记录——697. 数组的度、728. 自除数 、821. 字…

腾讯云开发者2022年度热文盘点

01十亿人都在用的健康码运维体系如何设计&#xff1f;随着疫情防控模式的迭代&#xff0c;健康码访问DAU逐渐趋于下跌&#xff0c;意味着健康码将逐步完成历史使命&#xff0c;见证着疫情的结束。本文特邀腾讯研发工程师李雄政将从技术架构、可观测体系、运营保障体系等运维体系…

星德胜冲刺上交所上市:计划募资约10亿元,朱云舫为实际控制人

近日&#xff0c;星德胜科技&#xff08;苏州&#xff09;股份有限公司&#xff08;下称“星德胜”&#xff09;预披露更新招股书&#xff0c;准备在上海证券交易所主板上市。据贝多财经了解&#xff0c;星德胜于2022年7月1日递交上市申请&#xff0c;海通证券为其保荐机构。 …

java ssm学生成绩查询考务系统

1 绪论 1 1.1 项目背景 1 1.2 项目研究的目的和方法 1 1.2.1 项目的研究目的 1 1.2.2 开发方法及步骤 1 1.3 本章小结 2 2. 开发平台介绍 3 2.1 系统开发环境 3 2.1.1 Eclipse 3 2.2 相关技术 4 2.2.1 JSP技术 …

Web Spider 常见混淆EVAL、AA、JJ、JSFUCK

文章目录一、EVAL & constructor二、AA混淆三、JJ混淆四、JSFUCK五、针对混淆的方法简单hook总结混淆的原理&#xff1a;就是把原本清晰的代码故意搞得花里胡哨&#xff0c;让局外人看不懂&#xff1b; 混淆的目的&#xff1a;让逆向者很难理解代码的意图&#xff0c;无法读…

随笔集1.24

秋夜独坐经常性会出现啥都不想干的情况&#xff0c;似那黄鹤一去不复返&#xff0c;只留下脑海的白云千载空悠&#xff0c;对任何事情&#xff0c;读书、研究、游戏都提不起兴趣&#xff0c;每当此时静坐于窗下灯前&#xff0c;想起王摩诘所谓雨中山果落&#xff0c;灯下草虫鸣…

第二章-计算机网络物理层

文章目录计算机网络一、物理层1.1、物理层的基本概念1.2、数据通信的基本知识编码与调制编码调制混合调制信道的极限容量传输方式1.3、物理层下面的传输媒体导引型传输媒体非导引型传输媒体1.4、互联网接入技术电话网拨号接入数字用户线接入光纤同轴混合网接入光纤接入无线接入…

用友BIP对接外部旺店通企业版奇门系统

用友BIP对接外部旺店通企业奇门系统源系统:旺店通企业奇门慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通ERP起步&#xf…

Jetpack架构组件库:Lifecycle、LiveData、ViewModel

Lifecycle 添加依赖 dependencies {def lifecycle_version "2.5.1" // ViewModelimplementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"// ViewModel utilities for Composeimplementation "androidx.lifecycle:lifecy…

解决nes_py在pip安装报错的问题

目录 项目场景&#xff1a; 问题描述 原因分析&#xff1a; 解决方案&#xff1a; 解决结果&#xff1a; 项目场景&#xff1a; 想跟随油管某视频复现强化学习方法玩超级马里奥的过程&#xff0c;结果在在Anaconda3虚拟环境中用pip安装nes_py时一直报错&#xff0c;报错信…

基于Python实现的图像文字识别OCR工具,包含GUI界面附完整版代码可直接运行

引言 最近在技术交流群里聊到一个关于图像文字识别的需求,在工作、生活中常常会用到,比如票据、漫画、扫描件、照片的文本提取。 博主基于 PyQt + labelme + PaddleOCR 写了一个桌面端的 OCR 工具,用于快速实现图片中文本区域自动检测 + 文本自动识别。 识别效果如下图所示:…

总结JDK中的时间日期类

在学习SpringMVC时&#xff0c;遇到了接收时间日期类型的参数的案例。 回顾JDK中与时间日期相关的API。 来系统地学习一下日期时间相关的API。 前置知识 在世界上有统一的时间标准 格林尼治时间&#xff0c;简称GMT&#xff08;以伦敦的本初子午线为标准&#xff09;&#x…

【BTC】数据结构

BTC 中对交易数据的存储主要涉及到了两种数据结构&#xff0c;一种是区块链&#xff0c;一种是 Merkle Tree。这两种数据结构组成了 BTC 中完整的区块链结构&#xff08;如下图所示&#xff09;&#xff0c;共同完成对数据的存储和验证&#xff0c;确保交易的有效性。 一、区块…

常见的反爬手段和解决思路

常见的反爬手段和解决思路 学习目标 了解 服务器反爬的原因了解 服务器常反什么样的爬虫了解 反爬虫领域常见的一些概念了解 反爬的三个方向了解 常见基于身份识别进行反爬了解 常见基于爬虫行为进行反爬了解 常见基于数据加密进行反爬 1 服务器反爬的原因 爬虫占总PV(PV是指…

基于nodejs+vue的中国古诗词的设计与实现

目 录 摘要 I Abstract II 1 绪论 1 1.1 选题背景 1 1.2 选题意义 1 1.3 研究内容 2 2 相关技术介绍 3 3 系统分析 5 3.1可行性分析 5 3.1.1 操作可行性 5 3.1.2 经济可行性 5 3.1.3 技术可行性 5 3.2 需求分析 5 3.2.1非功能性需求 …