第二章 Java编程基础

article/2025/8/22 6:21:15

第二章 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类型的变量。

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

例如:

/*
package chapter02;public class Change1 {public static void main (String[] args) {int num = 4;byte b = num;System.out.println(b);}
}
*///程序报错,显然数据类型不兼容,不能将int类型转换为byte类型
//因为一个int类型的值赋给byte类型的变量b时,由于int类型的取值范围大于byte类型的取值范围
//这样的赋值会导致溢出。//下面进行强制类型转换,即强制将int类型的值赋给byte类型的变量
//目标类型 变量 = (目标类型)变量0
package chapter02;public class Change1 {public static void main (String[] args) {int num = 4;byte b = (byte) num;System.out.println(b);}
}

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

例如:

public class Example02 {public static void main(String[] args) {byte a;                // 定义byte类型的变量aint b = 298;          // 定义int类型的变量ba = (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. 变量作用域

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

在这里插入图片描述

package chapter02;public class zyy {public static void main(String[] args) {int x = 12;{int y = 96;System.out.println(x);System.out.println(y);}//y = x;System.out.println(x);}
}//显而易见,编译器找不到y。错误原因在于,变量y的作用域在7-9行代码。在11行对y进行赋值是在变量的作用域之外的。


三. 运算符

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,初始值为0int y = 0; 						// 定义变量y,初始值为0int z = 0; 						// 定义变量z,初始值为0boolean a, b; 					// 定义boolean变量a和ba = 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]的值是否大于maxmax = arr[x];   				// 条件成立,将arr[x]的值赋给max}}return max;              				// 返回最大值max}
}


6. 排序


(未完待续……)
上次更新时间2023年4月10日



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


http://chatgpt.dhexx.cn/article/08DxQ8xb.shtml

相关文章

【JAVA】1.编程基础

1.Java基本语法 JAVA基本格式&#xff1a; 修饰符 class 类名{ 程序代码 } public class java {public static void main(String[] args) {System.out.println("HelloWorld"); } public static void main(String[] args) {} &#xff08;对于初学者来说这个部分必…

第二章Java编程基础

一、填空题 1&#xff0e;Java程序代码必须放在一个类中&#xff0c;类使用class关键词定义。 2&#xff0e;Java中的注释有三类&#xff0c;分别是单行注释、多行注释、文档注释。 3&#xff0e;Java语言中&#xff0c;int类型所占存储空间为4个字节。 4&#xff0e;用于比…

Java基础 —— 编程入门

一、比特(bit)和字节(byte) 一个0或者一个1存储为一个比特(bit)&#xff0c;是计算机中最小的存储单位。计算机中是最基本的存储单元是字节(byte)。 每个字节由8个比特构成。 计算机就是一系列的电路开关。每个开关存在两种状态:关(off)和开(on)。如果电路是开的&#xff0c;它…

第二章:JAVA编程基础

目录 一&#xff1a;Java的基本语法格式 二&#xff1a;Java中的变量与常量 三&#xff1a;Java中的运算符 四&#xff1a;选择结构语句 五&#xff1a;循环结构语句 六&#xff1a;数组 一&#xff1a;Java的基本语法格式 1&#xff1a;语法格式 [修饰符] class 类名{…

Java编程基础知识(一)

目录 一.Java的基本语法 1.Java的基本语法格式 2.Java中的注释 3.Java中的关键字 Java中的标识符 二.Java中的常量与变量 1.常量 2.变量 三.Java中的运算符 四.数据输入 一.Java的基本语法 1.Java的基本语法格式 编写Java程序必须先声明一个类&#xff0c;然后再类中…

Java编程基础

目录 第一篇、Java编程基础 ❀Java中的属性名词 ❀Java数据类型 ❀转义字符 ❀&& 和 & 与 || 和 | ❀方法 第二篇、Java面向对象编程 ❀类和对象 ❀面向过程和面向对象的区别 ❀面向对象程序设计的主要特性 ❀类和对象概述 ❀对象的内存结构 ❀垃圾空间…

java编程基础(入门级)(超级完整版)

java基础编程&#xff08;入门&#xff09; 01基础知识 1.计算机基础 【1】进制 A.十进制转化二进制 除以2&#xff0c;求余数&#xff0c;商继续除以2&#xff0c;一直到0为止&#xff0c;从底下往上得到结果。 B.二进制转化十进制 1 | 1 | 0 | 0 2 3 ∣ 2 2 ∣ 2 1 ∣ 2 …

UFBGA176+25 封装尺寸图

下图是UFBGA17625 封装规格的参数&#xff0c;根据下图的参数&#xff0c;即可制作UFBGA17625 的PCB封装

电阻的封装规格

1.直插式电阻 卧式直插电阻的封装形式为AXIAL-xx(比如 AXIAL-0.3)&#xff0c;0.3为焊盘中心距&#xff0c;单位是英寸&#xff0c;1 inch 25.4 mm 1000mil。 M型&#xff0c;电阻两端折弯。金属膜直插电阻功率-封装-尺寸对应表 封装尺寸(inch)对应长度&#xff08;mm&#…

Allegro PCB封装表贴器件-0805电阻-实战-详细封装制作过程(一)

1.Allegro封装元素 使用Allegro制作PCB封装&#xff0c;首先我们需要了解Allegro封装组成的元素&#xff0c;由焊盘、外形、字符三要素组成&#xff0c;如图 1所示。 图 1 Allegro封装元素 2.表贴元器件 2.1 0805电阻 我们需从规格书获得0805电阻推荐焊盘尺寸&#xff0c;如图 …

常见的贴片LED封装尺寸规格表

LED灯珠分为表贴式&#xff08;SMD&#xff09;和直插式&#xff08;DIP&#xff09;&#xff0c;表贴就是大家常说的贴片&#xff0c;也成为贴片式&#xff0c;本文主要介绍贴片灯珠的规格尺寸和命名。 单颗LED封装后通常以其尺寸命名&#xff0c;比如&#xff1a; 3528、5050…

0805,0603,1206这些封装的名字是什么来的

封装尺寸是长x宽&#xff0c;0805,0603,1206 这些单位是英制&#xff0c;0805代表0.8英寸x0.5英寸&#xff0c;而1英寸25.4毫米 &#xff08;注意&#xff1a;封装尺寸是实物封装的尺寸&#xff0c;不是焊盘的或者pcb封装图的尺寸&#xff0c;pcb封装图的尺寸会稍微大些&#…

centos7 安装 dos2unix

https://pkgs.org/download/dos2unix 下面选择对应的安装包 如centos7下则选择 https://centos.pkgs.org/7/centos-x86_64/dos2unix-6.0.3-7.el7.x86_64.rpm.html

Centos 7 离线安装dos2unix-7.4.0-3.el8.x86_64.rpm

如果你的服务器可以通互联网&#xff0c;安装dos2unix&#xff0c;非常简单&#xff1a;yum install -y dos2unix 要是内网安装dos2unix 接着往下瞅。 废话少说&#xff0c;直接上安装包好吧&#xff01;&#xff01;&#xff01; 链接: https://pan.baidu.com/s/1QOsHn9jVy…

Linux编码及dos2unix,unix2dos命令

通常我们在执行shell脚本的时候会遇到类似下面的错误&#xff0c;而事实上脚本没有任何问题&#xff0c;很多人会卡在这一步很久&#xff0c;其实有可能是编码导致的回车符不一致引起的&#xff1a; ERROR&#xff1a; $\r: command not found ^M: bad interpreter No such…

Linux命令之dos2unix

最近在linux下安装fastdfs服务器的时候&#xff0c;发现修改好相关的配置文件之后&#xff1b;启动nginx静态资源服务器&#xff0c;上传图片成功后&#xff0c;输入storage服务器给出的图片存储路径。 例如 http://192.168.1.5/group1/M00/00/00/wKgBBVfsGhyAKA81AABdr…

Linux命令学习总结:dos2unix - unix2dos

命令简介&#xff1a; dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。 而unix2dos则是和dos2unix互为孪生的一个命令&#xff0c;它是将Li…

mac vim 配色方案

如果没有代码高亮的话&#xff0c;用vim写代码确实不爽&#xff0c;于是&#xff0c;笔者今天花了一个上午的时间把mac下vim 的所有配色试了个遍&#xff0c; 下面给大家展示一下mac下所有vim的配色方案的样式。 darkblue delek elflord koehler murphy p…

MacVim配置参考

1、http://www.oschina.net/question/132421_18650?sorttime&p1 vim是一个很强的神器&#xff0c;对于我只用到其中的一小部分内容&#xff0c;接下来是我打造 php IDE的全过程&#xff0c;希望有兄弟能指点我其中的不足&#xff0c;要学习的兄弟能跟我一起努力学习。 第一…

mac vim 安装 YouCompleteMe 插件自动补全

前言 笔者常用vim进行c/c/go开发&#xff0c;虽说vim也有自带自动补全&#xff08;controln&#xff0c;controlp&#xff09;&#xff0c;不过操作上还是比较麻烦&#xff0c;笔者希望可以实现&#xff0c;输入部分单词可以直接弹出下拉框提示所有可能的单词。网上一搜&#…