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

相关文章

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo