Java必知必会-入门篇

2024-08-24 21:28
文章标签 java 入门篇 必知 必会

本文主要是介绍Java必知必会-入门篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明:

  • 会先教会大家如何使用,并给出相应的练习题示例
  • 作业习题是帮助大家巩固所学内容,需要大家独立完成

目录

一、输出内容

1.1 学会打印 hello world

1.2 练习题:打印一棵树

1.3 作业习题:打印一颗星星 

二、基本数据类型

2.1 认识基础数据类型

2.2 分别对基础数据类型进行介绍

2.3 变量与常量

2.4 声明变量与常量

2.5 练习题:计算半径为5的圆面积

2.6 作业习题:一个小球从98米的高空做自由落体运动,请问需要多少秒才抵达地面?

三、运算符

3.1 算术运算符

3.2 自增和自减运算符

3.3 比较运算符

3.4 位运算符

3.5 三元运算符

 3.6 作业习题:使用三元运算符模拟点赞功能

四、数据类型转换

4.1 隐式类型转换

4.2 显式类型转换

4.3 作业习题:自主分别进行一次隐式类型转换和显式类型转换 

五、流程控制

5.1 条件语句

5.2 循环语句

5.3 循环控制

5.4 作业习题:使用任意一个循环语句打印从10000到1且不是4的倍数的数值

六、数组

6.1 一维数组

特点:

初始化一维数组

静态初始化(在声明时赋值)

动态初始化(使用new关键字)

访问数组元素 

修改数组元素 

遍历数组

 示例:声明、初始化、修改和遍历一个一维数组。

6.2 二维数组

特点:

初始化二维数组

声明和初始化:

初始化并赋值:

访问元素: 

遍历二维数组:

 示例:创建、初始化、访问和遍历一个二维数组。

6.3 作业习题:使用Java生成杨辉三角形前五行


一、输出内容

1.1 学会打印 hello world

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

运行后控制台显示的结果:

 Hello world!

1.2 练习题:打印一棵树

public class Main {public static void main(String[] args) {System.out.println("*");System.out.println("**");System.out.println("***");System.out.println("****");System.out.println("*****");System.out.println("*");System.out.println("*");System.out.println("*");System.out.println("*");}
}

运行后控制台显示的结果:

*
**
***
****
*****
*
*
*
*

1.3 作业习题:打印一颗星星 

二、基本数据类型

2.1 认识基础数据类型

Java中有8种基本的数据类型,用于存储数值、字符和布尔值

数值类型:

  • 整数类型:byte、short、int、long
  • 浮点类型:float、double

字符类型:char

布尔类型:boolean

2.2 分别对基础数据类型进行介绍

整型数据类型:

  • byte:8位,有符号的整数类型,取值范围从-128到127。
  • short:16位,有符号的整数类型,取值范围从-32,768到32,767。
  • int:32位,有符号的整数类型,取值范围从-2^31到2^31-1。
  • long:64位,有符号的整数类型,取值范围从-2^63到2^63-1。

浮点数据类型:

  • float:32位,单精度、32位IEEE 754浮点数。
  • double:64位,双精度、64位IEEE 754浮点数。

字符类型:

  • char:16位,表示Unicode字符,取值范围从’\u0000’(即为0)到’\uffff’(即为65,535)。

布尔类型:

  • boolean:表示逻辑值true和false。

2.3 变量与常量

变量:在程序执行的过程中,其值能被改变的量称为变量

常量:在程序执行的过程中,其值不能发生改变的量称为常量,使用final关键字进行修饰

2.4 声明变量与常量

声明变量:

int number;             // 声明一个整型变量
double pi = 3.14159;    // 声明并初始化一个双精度浮点数变量
char letter = 'A';      // 声明并初始化一个字符变量
boolean flag = true;    // 声明并初始化一个布尔变量

声明常量: 

public class Constants {public static final double PI = 3.14159; // 声明一个类级别的常量
}
final int MAX_VALUE = 100; // 声明一个整型常量

如果没有public关键字,那么这些常量将只能在Constants类内部访问。如果没有static关键字,那么在其他类中访问这些常量时,需要创建Constants类的实例。 

2.5 练习题:计算半径为5的圆面积

public class CircleAreaCalculator {public static final double PI = 3.14159; // 自定义π的常量public static void main(String[] args) {double radius = 5.0; // 圆的半径double area = calculateCircleArea(radius);System.out.println("圆的面积是: " + area);}public static double calculateCircleArea(double radius) {return PI * radius * radius; // 使用自定义的π常量计算面积}
}

2.6 作业习题:一个小球从98米的高空做自由落体运动,请问需要多少秒才抵达地面?

三、运算符

3.1 算术运算符

  • 加法(+):将两个操作数相加。

    • 示例:int sum = 5 + 3; // 结果为8
  • 减法(-):从第一个操作数中减去第二个操作数。

    • 示例:int difference = 5 - 3; // 结果为2
  • 乘法(*):将两个操作数相乘。

    • 示例:int product = 5 * 3; // 结果为15
  • 除法(/):将第一个操作数除以第二个操作数。

    • 示例:double quotient = 5.0 / 2.0; // 结果为2.5
    • 注意:如果两个操作数都是整数类型,结果会舍去小数部分,只保留整数部分。
  • 取模(%):返回第一个操作数除以第二个操作数后的余数。

    • 示例:int remainder = 5 % 3; // 结果为2

3.2 自增和自减运算符

  • 前缀形式:运算符位于变量之前(例如 ++a 或 --a)。在这种情况下,变量在表达式求值之前增加或减少。

  • 后缀形式:运算符位于变量之后(例如 a++ 或 a--)。在这种情况下,变量在表达式求值之后增加或减少。 

public class IncrementDecrementOperators {public static void main(String[] args) {int a = 5;// 前缀自增int b = ++a; // a先自增为6,然后b被赋值为6System.out.println("a (after ++a): " + a); // 输出 6System.out.println("b: " + b); // 输出 6// 后缀自增int c = a++; // c被赋值为6,然后a自增为7System.out.println("a (after a++): " + a); // 输出 7System.out.println("c: " + c); // 输出 6// 前缀自减int d = --a; // a先自减为6,然后d被赋值为6System.out.println("a (after --a): " + a); // 输出 6System.out.println("d: " + d); // 输出 6// 后缀自减int e = a--; // e被赋值为6,然后a自减为5System.out.println("a (after a--): " + a); // 输出 5System.out.println("e: " + e); // 输出 6}
}

3.3 比较运算符

  • 等于(==):检查两个操作数是否相等。

    • 示例:int a = 5; int b = 5; boolean result = (a == b); // result为true
  • 不等于(!=):检查两个操作数是否不相等。

    • 示例:int a = 5; int b = 3; boolean result = (a != b); // result为true
  • 大于(>):检查左边的操作数是否大于右边的操作数。

    • 示例:int a = 5; int b = 3; boolean result = (a > b); // result为true
  • 小于(<):检查左边的操作数是否小于右边的操作数。

    • 示例:int a = 3; int b = 5; boolean result = (a < b); // result为true
  • 大于等于(>=):检查左边的操作数是否大于或等于右边的操作数。

    • 示例:int a = 5; int b = 5; boolean result = (a >= b); // result为true
  • 小于等于(<=):检查左边的操作数是否小于或等于右边的操作数。

    • 示例:int a = 3; int b = 5; boolean result = (a <= b); // result为true

3.4 位运算符

  • 按位与(&)

    • 两个操作数的相应位都为1时,结果位才为1。
    • 示例:int a = 5; int b = 3; int result = a & b; // result为1(二进制:0101 & 0011 = 0001)
  • 按位或(|)

    • 两个操作数的相应位都为0时,结果位才为0。
    • 示例:int a = 5; int b = 3; int result = a | b; // result为7(二进制:0101 | 0011 = 0111)
  • 按位异或(^)

    • 两个操作数的相应位相同,结果位为0;相应位不同,结果位为1。
    • 示例:int a = 5; int b = 3; int result = a ^ b; // result为6(二进制:0101 ^ 0011 = 0110)
  • 按位非(~)

    • 反转操作数的每一位,即0变1,1变0。
    • 示例:int a = 5; int result = ~a; // result为-6(二进制:0101 变为 1010,即-6的补码)
  • 左移(<<)

    • 将操作数的二进制表示向左移动指定的位数。
    • 示例:int a = 2; int result = a << 2; // result为8(二进制:0010 向左移动2位,变为 1000)
  • 右移(>>)

    • 将操作数的二进制表示向右移动指定的位数。
    • 示例:int a = 8; int result = a >> 2; // result为2(二进制:1000 向右移动2位,变为 0010)
  • 无符号右移(>>>)

    • 类似于右移,但填充最高位的值为0,而不是符号位。
    • 示例:int a = -2; int result = a >>> 2; // result为-2(二进制:1111 向右移动2位,变为 1111,但符号位被置为0)

3.5 三元运算符

三元运算符(也称为条件运算符)是一种可以返回三个表达式中的一个表达式的值的运算符。它的基本形式如下:

(条件) ? 表达式1 : 表达式2;

三元运算符的一个示例: 

int a = 5;
int b = (a > 3) ? 10 : 20;
System.out.println("b的值是:" + b); // 输出 b的值是:10

 3.6 作业习题:使用三元运算符模拟点赞功能

四、数据类型转换

4.1 隐式类型转换

从低级类型向高级类型转换,系统会自动执行,这种转换称为隐式转换。

类型按精度从低到高排序的顺序为byte、short、int、long、float、double

4.2 显式类型转换

显示数据转换(也称为强制类型转换)是指显式地将一个变量从一种数据类型转换为另一种数据类型。这种转换可能会导致数据丢失,因为目标数据类型的范围可能小于源数据类型。

显示数据转换的例子:

  • float 转换为 int
public class ImplicitExplicitConversion {public static void main(String[] args) {float f = 100.0f;int i = (int) f; // 显示数据转换,将 float 转换为 intSystem.out.println("f 的值是:" + f);System.out.println("i 的值是:" + i);}
}

4.3 作业习题:自主分别进行一次隐式类型转换和显式类型转换 

五、流程控制

5.1 条件语句

if 语句基本形式:

if (条件) {
    // 如果条件为 true,则执行的代码
}

示例:

int age = 20;
if (age >= 18) {System.out.println("成年了!");
} else {System.out.println("未成年!");
}

if-else 语句基本形式:

if (条件) {
    // 如果条件为 true,则执行的代码
} else {
    // 如果条件为 false,则执行的代码
}

 示例:

int score = 85;
if (score >= 90) {System.out.println("优秀!");
} else if (score >= 80) {System.out.println("良好!");
} else {System.out.println("及格!");
}

switch语句的基本语法和用法:

switch (expression) {case value1:// 如果expression等于value1,则执行这里的代码break;case value2:// 如果expression等于value2,则执行这里的代码break;// 可以有多个casedefault:// 如果expression与所有case都不匹配,则执行这里的代码
}
  • expression:一个整数、字符或枚举类型的表达式。
  • value1value2等:与expression相匹配的值。
  • break:在每个case块的最后,使用break语句来结束switch语句,防止代码继续执行下一个case块。
  • default:可选的,如果expression与所有case都不匹配,则执行这里的代码。

简单的switch语句示例:

public class SwitchStatementExample {public static void main(String[] args) {int dayOfWeek = 3; // 假设今天是星期三switch (dayOfWeek) {case 1:System.out.println("今天是星期一");break;case 2:System.out.println("今天是星期二");break;case 3:System.out.println("今天是星期三");break;case 4:System.out.println("今天是星期四");break;case 5:System.out.println("今天是星期五");break;case 6:System.out.println("今天是星期六");break;case 7:System.out.println("今天是星期日");break;default:System.out.println("输入的数字不是一周中的某一天");break;}}
}

 switch语句也可以用于字符类型:

public class SwitchStatementExample {public static void main(String[] args) {char grade = 'B';switch (grade) {case 'A':System.out.println("优秀");break;case 'B':System.out.println("良好");break;case 'C':System.out.println("及格");break;case 'D':System.out.println("不及格");break;default:System.out.println("无效的成绩");break;}}
}

5.2 循环语句

循环语句用于重复执行一段代码,直到满足某个条件为止。Java提供了三种主要的循环结构:for语句、while语句和do-while语句。

for 循环是最常用的循环之一,它由三个部分组成:初始化表达式、循环条件、以及迭代表达式。

  • 初始化表达式:在循环开始之前执行一次,用于设置循环变量。
  • 循环条件:在每次迭代前检查,如果为真,则执行循环体;如果为假,则退出循环。
  • 迭代表达式:在每次循环体执行后执行,用于更新循环变量。

for 语句基本形式:

for (初始化表达式; 循环条件; 迭代表达式) {// 循环体
}

简单的 for 循环示例,用于在 Java 中打印数字 0 到 9:

for (int i = 0; i < 10; i++) {System.out.println(i);
}

 while 循环在每次迭代之前检查条件。如果条件为真,则执行循环体。它适用于当你不知道循环需要执行多少次,但你知道需要满足什么条件才能继续执行时。

while 语句基本形式:

while (条件) {// 循环体
}

 示例:

int i = 0; // 初始化循环变量
while (i < 10) { // 循环条件System.out.println(i); // 循环体:打印当前数字i++; // 更新循环变量
}

do-while 循环与 while 循环相似,但是它保证至少执行一次循环体,因为条件检查是在循环体之后进行的。 

do-while语句基本形式:

do {// 循环体
} while (条件);

 示例:

int i = 0; // 初始化循环变量
do {System.out.println(i); // 循环体:打印当前数字i++; // 更新循环变量
} while (i < 10); // 循环条件

5.3 循环控制

break 语句:

用于立即退出当前循环,不再执行循环体内的剩余代码。

for (int i = 0; i < 10; i++) {if (i == 5) {break;}System.out.println(i);
}

continue 语句:

语句用于跳过当前循环的剩余代码,直接进入下一次循环。

for (int i = 0; i < 10; i++) {if (i == 5) {continue;}System.out.println(i);
}

5.4 作业习题:使用任意一个循环语句打印从10000到1且不是4的倍数的数值

六、数组

6.1 一维数组

一维数组(One-dimensional array),也简称数组,是数据结构中的一种基础形式,用于在单个线性序列中存储一系列相同类型的数据项。数组中的每个数据项都有一个索引(或位置),通过这个索引可以快速访问到数组中的特定元素。

特点:

  • 顺序存储:数组中的元素是连续存放的。
  • 相同类型:数组通常存储相同类型的数据。
  • 随机访问:可以通过索引直接访问数组中的任何元素。
  • 固定大小:一旦数组被创建,它的大小就固定不变。

初始化一维数组

静态初始化(在声明时赋值)
int[] numbers = {1, 2, 3, 4, 5};
动态初始化(使用new关键字)
int[] numbers = new int[5]; // 创建一个可以存储5个整数的数组

访问数组元素 

可以通过索引来访问数组中的元素。索引从0开始。

int firstElement = numbers[0]; // 获取第一个元素

修改数组元素 

可以通过索引来修改数组中的元素。

numbers[0] = 10; // 修改第一个元素为10

遍历数组

可以使用for循环来遍历数组中的所有元素。

for (int i = 0; i < numbers.length; i++) {System.out.println(numbers[i]);
}

或者使用增强型for循环(for-each循环) 

for (int number : numbers) {System.out.println(number);
}

 示例:声明、初始化、修改和遍历一个一维数组。

public class Main {public static void main(String[] args) {// 声明并初始化一个一维数组int[] numbers = new int[5];// 修改数组元素numbers[0] = 1;numbers[1] = 2;numbers[2] = 3;numbers[3] = 4;numbers[4] = 5;// 遍历数组并打印每个元素for (int i = 0; i < numbers.length; i++) {System.out.println("Element at index " + i + ": " + numbers[i]);}}
}

6.2 二维数组

二维数组(Two-dimensional array),也称为矩阵(matrix),是一种数据结构,它存储了元素的一个表格,这些元素可以通过两个索引来访问:行索引和列索引。在许多编程语言中,二维数组可以看作是一维数组的数组。

特点:

  • 二维结构:元素按行和列排列。
  • 相同类型:通常存储相同类型的数据。
  • 固定大小:一旦创建,其行数和列数就固定了。
  • 连续存储:在内存中,二维数组的元素通常是连续存储的。

初始化二维数组

声明和初始化:
int[][] matrix = new int[3][3]; // 创建一个3x3的二维数组
初始化并赋值:
int[][] matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}
};

访问元素: 

int element = matrix[1][2]; // 获取第二行第三列的元素,即数字6

遍历二维数组:

for (int i = 0; i < matrix.length; i++) { // 遍历行for (int j = 0; j < matrix[i].length; j++) { // 遍历列System.out.print(matrix[i][j] + " ");}System.out.println(); // 换行
}

 示例:创建、初始化、访问和遍历一个二维数组。

public class Main {public static void main(String[] args) {// 声明并初始化一个3x3的二维数组int[][] matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};// 遍历并打印二维数组的所有元素for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[i].length; j++) {System.out.print(matrix[i][j] + " ");}System.out.println(); // 在每行后换行}}
}

6.3 作业习题:使用Java生成杨辉三角形前五行

这篇关于Java必知必会-入门篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103643

相关文章

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2