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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定