基本语法和 package 与 jar

3.基本语法

1.输入输出
java 复制代码
// 导入 java.util 包中的 Scanner 类
import java.util.Scanner;

// 定义名为 ScannerExample 的公共类
public class ScannerExample {
    // 主方法,程序的入口点
    public static void main(String[] args) {
        // 创建 Scanner 对象,用于从标准输入流(键盘)读取用户输入
        Scanner scanner = new Scanner(System.in);

        // 提示用户输入姓名,并将输入的字符串赋值给变量 name
        System.out.print("Enter your name: ");
        String name = scanner.next();

        // 提示用户输入年龄,并将输入的整数赋值给变量 age
        System.out.print("Enter your age: ");
        int age = scanner.nextInt();

        // 输出包含用户输入信息的欢迎消息到控制台
        System.out.println("Hello, " + name + "! You are " + age + " years old.");

        // 关闭 Scanner 对象,释放资源
        scanner.close();
    }
}
2.类型

字符类型

char String

字符值:单引号里必须有一个字符

字符传值:双引号里可以有零个、一个、多个字符

数字类型

类型名 说明 数字范围 类型后缀
byte 整数类型,用1个字节表示 [-2^7,2^7) 即 [-128,128)
short 整数类型,用2个字节表示 [-2^15,2^15)
int 整数类型,用4个字节表示 [-2^31,2^31)
long 整数类型,用8个字节表示 [-2^63,2^63) L
float 浮点小数,用4个字节表示 [-1.9999999 * 2^127,1.9999999 * 2^127] F
double 浮点小数,用8个字节表示 [-1.9999999 * 2^1023,1.9999999 * 2^1023] D
3.运算符

/

java 复制代码
int a = 5 / 3

结果为 1,整数除法有两个注意点

  • 整数除法,只会保留商,而小数部分会被舍弃,并不考虑四舍五入
  • 除0是不合法的,会出错

小数加减乘除与整数类似,只是小数除法可以保留小数点后的数字,而且可以除零,例如

java 复制代码
jshell> 5.0 / 3.0
$40 ==> 1.6666666666666667

jshell> 5.0 / 0.0
$41 ==> Infinity
java 复制代码
public class Divide {
    public static void main(String[] args) {
        System.out.println(5/3);//1
        System.out.println(5/3.0);//1.6666666666666667
        System.out.println(5.0/3);//1.6666666666666667
        System.out.println(5.0/3.0);//1.6666666666666667
        System.out.println(5.0/0);//Infinity
        System.out.println(5/0);//java.lang.ArithmeticException: / by zero
    }
}

java10后可使用var定义变量

数字格式化

对结果的数字进行格式化,让它以货币的格式来显示

需要借助核心类库中一个 NumberFormat 对象,字面意思是数字格式化,使用它的 getCurrencyInstance 方法来获取一个货币格式化对象,再使用它的 format 方法把 double 小数格式化为货币格式,格式化时也会保留两位小数

例子

java 复制代码
System.out.println(NumberFormat.getCurrencyInstance(Locale.CHINA).format(1000000.00));  
System.out.println(NumberFormat.getCurrencyInstance(Locale.US).format(1000000.00));
System.out.println(NumberFormat.getCurrencyInstance(Locale.GERMANY).format(1000000.00));
System.out.println(NumberFormat.getCurrencyInstance(Locale.KOREA).format(1000000.00));

输出

¥1,000,000.00
$1,000,000.00
1.000.000,00 €
₩1,000,000

如果 Locale 省略不写,默认为中国

idea快捷键

ctrl+shift+enter:光标置下一行

alt+enter,引入局部变量:完成变量定义,快速生成前面的变量定义

ctrl+n,输入类的名称,可查看该类的源代码,此时,右键翻译(前提:安装插件translation),ctrl+F12即可查看该类的方法,已锁的锁为私有,不可被外部类使用,开锁的锁为公共的,可被外部类使用。

ctrl+q:光标置于方法上,ctr+q,即可查看该方法的说明解释

alt+enter:用于代码提示,可用于条件取反

4.条件语句

Java中有三种主要的条件语句:if语句、switch语句和三元运算符。

1. if语句:

if语句用于在满足某个条件时执行特定的代码块。

java 复制代码
int x = 10;

if (x > 0) {
    System.out.println("x是正数");
} else if (x < 0) {
    System.out.println("x是负数");
} else {
    System.out.println("x是零");
}
2. switch语句:

switch语句用于根据表达式的值执行不同的代码块。

java 复制代码
int day = 3;

switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    // ... 其他case
    default:
        System.out.println("不是有效的星期几");
}
3. 三元运算符:

三元运算符是一种简单的条件表达式,用于根据条件的真假选择不同的值。

java 复制代码
int a = 5;
int b = 10;

int max = (a > b) ? a : b;
System.out.println("最大值是: " + max);

在上述例子中,如果a > b为真,max将取值为a,否则取值为b

这些条件语句在Java中用于根据不同的条件执行不同的代码,使程序能够根据输入或运行时的情况做出不同的决策。

5.循环语句

Java中有几种常见的循环语句,主要包括for循环、while循环、do-while循环和增强型for-each循环。

1. for循环:

for循环通常用于已知循环次数的情况。

java 复制代码
for (int i = 0; i < 5; i++) {
    System.out.println("迭代次数:" + i);
}
2. while循环:

while循环在循环开始前判断条件是否为真,只有在条件为真时才执行循环体。

java 复制代码
int i = 0;

while (i < 5) {
    System.out.println("迭代次数:" + i);
    i++;
}
3. do-while循环:

do-while循环先执行一次循环体,然后在循环迭代前检查条件。

java 复制代码
int i = 0;

do {
    System.out.println("迭代次数:" + i);
    i++;
} while (i < 5);
4. 增强型for-each循环:

用于遍历数组、集合等元素的简便方式。

java 复制代码
int[] numbers = {1, 2, 3, 4, 5};

for (int num : numbers) {
    System.out.println("数组元素:" + num);
}

这些循环语句在Java中用于处理不同类型的迭代和循环需求。选择使用哪种循环取决于具体的情况和需求。

6.方法的定义和调用

在Java中,方法(函数)的定义格式如下:

java 复制代码
修饰符 返回类型 方法名(参数列表) {
    // 方法体
    // 可以包含一系列语句和逻辑
    // 返回语句用于指定方法返回值(如果返回类型不是void)
    return 返回值;
}

以下是对上述格式的解释:

  • 修饰符(Modifiers): 可选的关键字,用于控制访问权限和其他特性。例如,publicprivateprotected等。

  • 返回类型(Return Type): 指定方法返回的数据类型,如果方法不返回任何值,可以使用void

  • 方法名(Method Name): 给方法取一个唯一的标识符,用于调用该方法。

  • 参数列表(Parameter List): 括号内包含传递给方法的参数,如果方法不需要参数,括号内可以为空。

  • 方法体(Method Body): 花括号内包含方法的具体实现,即一系列语句和逻辑。

  • 返回值(Return Statement): 如果方法有返回类型(不是void),则使用return语句返回一个值。

下面是一个示例:

java 复制代码
public class MyClass {
    // 方法的定义
    public int addNumbers(int a, int b) {
        int sum = a + b;
        return sum; // 返回值为两个数的和
    }

    // 无返回值的方法
    public void displayMessage(String message) {
        System.out.println("Message: " + message);
    }

    public static void main(String[] args) {
        MyClass myObject = new MyClass();

        // 调用方法
        int result = myObject.addNumbers(5, 7);
        System.out.println("Sum: " + result);

        myObject.displayMessage("Hello, Java!");
    }
}

在上述示例中,addNumbers方法接收两个参数并返回它们的和,而displayMessage方法接收一个字符串参数并在控制台打印该消息。

注意:

java 复制代码
/**+tab 即可生成文档注释
对有返回值的方法,进行抛出异常。截断方法的执行。
throw new 异常类型("提示信息")
IllegalArgumentException 非法参数异常
throw new IllegalArgumentException("贷款金额必须 > 0");

4. package 与 jar

1. package

随着我们写的类越来越多,把他们都放在一块儿来管理,感觉比较的不规范,因此,我们要引入一个新的package语法,对源文件进行一个更好的管理。

其实这个package说白了就是Java中一种目录结构

java 复制代码
|- 包1
    |- 从属于包1 的类
|- 包2
    |- 从属于包2 的类

语法:

java 复制代码
package 包名; // 告诉下面的类从属于此包

class 类 {
    
}

包的命名一般都是域名的倒置,如

  • baidu.com 域名的倒置就是 com.baidu
  • bilibilicom 域名的倒置就是 com.bilibili
2. import

与 package 关系非常密切的一个语法:import,如果你的类想使用另外一个类,而两个类不同包,这时就必须用 import,把另一个类导入进来才能使用

java 复制代码
package com.itheima.a;

import java.util.Scanner;

class Calulator {
    public static void main(String[] args) {
        // 要用到 Scanner, 这时就用用到上面的 import 语句
    }
}
  • 有一种特殊情况不需要 import 导入,即 java.lang 包下的类使用时,都不需要 import
3. jar

代码写完了,我们最终要发布成品吧,那是把源文件直接给使用者吗?显然不是吧。最终交给 jvm 运行的是 class 类文件,我们会把这多个 class 类文件打成一个压缩包,交付给用户。

用 idea 可以方便地打包

步骤1:创建工件(artifact)

步骤2:构建工件

步骤3:运行 jar 包,需要客户电脑上安装好 jdk

java 复制代码
java -jar jar包文件名
相关推荐
潘多编程几秒前
Java中的状态机实现:使用Spring State Machine管理复杂状态流转
java·开发语言·spring
_阿伟_20 分钟前
SpringMVC
java·spring
代码在改了26 分钟前
springboot厨房达人美食分享平台(源码+文档+调试+答疑)
java·spring boot
wclass-zhengge1 小时前
数据结构篇(绪论)
java·数据结构·算法
何事驚慌1 小时前
2024/10/5 数据结构打卡
java·数据结构·算法
结衣结衣.1 小时前
C++ 类和对象的初步介绍
java·开发语言·数据结构·c++·笔记·学习·算法
TJKFYY1 小时前
Java.数据结构.HashSet
java·开发语言·数据结构
kylinxjd1 小时前
spring boot发送邮件
java·spring boot·后端·发送email邮件
OLDERHARD1 小时前
Java - MyBatis(上)
java·oracle·mybatis
杨荧1 小时前
【JAVA开源】基于Vue和SpringBoot的旅游管理系统
java·vue.js·spring boot·spring cloud·开源·旅游