【Java核心技术 卷I】第三章 Java的基本程序设计结构

3.1 一个简单的Java应用程序

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

在这里,使用了 System.out 对象并调用了它的 println 方法。注意, 点号( • )用于调用方法。Java 使用的通用语法是:

object.method(parameters);

这等价于函数调用

注意:

  1. Java 区分大小写。
  2. 关键字 public 称为访问修饰符(access modifier), 这些修饰符用于控制程序的其他部分对这段代码的访问级別。(详情见第5章)
  3. 关键字 class 后面紧跟类名。名字必须以字母开头,后面可以跟字母和数字的任意组合。长度基本上没有限制。
  4. 源代码的文件名必须与公共类的名字相同,并用 .java 作为扩展名。
  5. 如果已经正确地命名了这个文件, 并且源代码中没有任何录人错误,在编译这段源代码之后就会得到一个包含这个类字节码的文件。Java 编译器将字节码文件自动地命名为FirstSample. class, 并与源文件存储在同一个目录下。
  6. 根据 Java 语言规范, main 方法必须声明为 public
  7. 每个句子必须用分号结束。

Java与C++:

  • Java 中的所有函数都属于某个类的方法(标准术语将其称为方法, 而不是成员函数)。因此,Java 中的 main 方法必须有一个外壳类。
  • Java 中的 main 方法必须是静态的。
  • 如果 main 方法正常退出, 那么 Java 应用程序的退出代码为 0,表示成功地运行了程序。如果希望在终止程序时返回其他的代码, 那就需要调用 System.exit 方法。

3.2 注释

有三种注释方式:

  • //:其注释内容从 // 开始到本行结尾
  • /**/:使用 /* */将一段比较长的注释括起来。
  • 第 3 种注释可以用来自动地生成文档。这种注释以 /** 开始, 以 */ 结束。

注意:在 Java 中,/* */ 注释不能嵌套。 也就是说, 不能简单地把代码用 /**/ 括起来作为注释, 因为这段代码本身可能也包含一个 */

3.3 数据类型

在这里插入图片描述

整型

  • int
  • short
  • long
  • byte
    在这里插入图片描述
    长整型、十六进制、八进制、二进制
  • 长整型后缀L或l
  • 十六进制前缀0x或0X
  • 八进制前缀0
  • 二进制前缀0b或0B
    在这里插入图片描述

Java整型数据范围的可移植性
在这里插入图片描述
一些加下划线_的操作
在这里插入图片描述
注意, Java 没有任何无符号(unsigned) 形式的 int、 long、short 或 byte 类型。

浮点类型

在这里插入图片描述
用十六进制表示浮点数
在这里插入图片描述
溢出或出错
在这里插入图片描述
对NaN的判断
在这里插入图片描述
二进制无法精确表示部分小数
在这里插入图片描述

char类型

在这里插入图片描述
特殊字符的转义序列
在这里插入图片描述
转移序列在解析代码之前处理产生的错误
在这里插入图片描述
尽量不要使用char
在这里插入图片描述

boolean

boolean (布尔)类型有两个值:false 和 true, 用来判定逻辑条件。
整型值和布尔值之间不能进行相互转换。
在这里插入图片描述

3.4 变量

对变量的声明

double salary;
int vacationDays;

在这里插入图片描述
一些命名小技巧
在这里插入图片描述
变量初始化
初始化的两种方式:
在这里插入图片描述
C++区分声明和定义,但Java不区分
在这里插入图片描述
final常量与static final类常量

在 Java 中, 利用关键字 final 指示常量
关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。

在 Java 中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字 static final设置一个类常量。
类常量的定义位于 main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。
而且,如果一个常量被声明为 public,那么其他类的方法也可以使用这个常量。

C++注释:
const 是 Java 保留的关键字,但目前并没有使用。
在 Java 中,必须使用 final定义常量。

3.5 运算符

在这里插入图片描述
数值类型之间的转换
在这里插入图片描述
在这里插入图片描述
在进行二元操作时(如±*/),操作数要转换为同一数据类型。
判断顺序为:

  1. double
  2. float
  3. long
  4. int

在这里插入图片描述
强制类型转换
可以转,但是可能会丢失精度,如double转为int,那么会强制截断小数。
如果想对浮点数进行四舍五入,则可以用Math.round方法。

对于目标数据类型溢出了:
在这里插入图片描述
这里byte最大表示为256,且300-256=44.

注意:不要在 boolean 类型与任何数值类型之间进行强制类型转换

结合赋值、自加自减操作与C++规则一样

关系与boolean运算符

==表示等于,!=表示不等于
在这里插入图片描述
三元操作符?:
在这里插入图片描述
位运算符
在这里插入图片描述
应用在布尔值上时, & 和丨运算符也会得到一个布尔值。
这些运算符与 && 和 || 运算符很类似,不过 & 和丨运算符不采用“ 短路” 方式来求值, 也就是说,得到计算结果之前两个操作数都需要计算

在这里插入图片描述
运算符的优先级
在这里插入图片描述
在这里插入图片描述
枚举类型
在这里插入图片描述

3.6 字符串

在这里插入图片描述
字串substring
可以理解为:左闭右开
在这里插入图片描述
在这里插入图片描述
拼接+
用+号拼接:

int age = 13;
String rating = "PG" + age;
//rating 为 PG13

用join方法拼接:
在这里插入图片描述
不可变字符串
String 类没有提供用于修改字符串的方法。
由于不能修改 Java 字符串中的字符, 所以在 Java 文档中将 String 类对象称为不可变字符串
当然, 可以修改字符串变量。
不可变字符串却有一个优点:编译器可以让字符串共享

检测字符串是否相等
可以使用 equals 方法检测两个字符串是否相等。

s.equal(t);

如果相等则返回true,否则返回false。

要想检测两个字符串是否相等,而不区分大小写, 可以使用equalsIgnoreCase 方法。

不能用==来判断String是否相等
在这里插入图片描述
空串与NULL串
在这里插入图片描述
在这里插入图片描述
码点与代码单元
在这里插入图片描述
String API
一些常用的API:

目前来讲都看不懂
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
构建字符串
在这里插入图片描述
StringBuilder类中常用的的重要方法:
在这里插入图片描述

3.7 输入输出

输出:调用System.out.println
输入:
首先需要构造一个 Scanner 对象,并与“ 标准输人流” System.in 关联。

Scanner in = new Scanner(System.in);

在这里插入图片描述

import java.util.*;

public class temp
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);

        //name
        System.out.println("What is your name?");
        String name = in.nextLine();

        //age
        System.out.println("How old are you?");
        int age = in.nextInt();

        //output
        System.out.println("Hello, "+name+" you are "+age);
    }
}

输出:
在这里插入图片描述
关于读取密码用的Console
在这里插入图片描述
一些方法:
在这里插入图片描述
在这里插入图片描述
格式化输出
在这里插入图片描述
用于printf的转换符:
在这里插入图片描述
在这里插入图片描述
printf方法中日期与时间的格式化选项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

格式说明符语法
在这里插入图片描述
文件输入与输出

在这里插入图片描述
在这里插入图片描述

3.8 控制流程

在这里插入图片描述
块作用域

块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。

不能在嵌套的两个块中声明同名的变量。
在这里插入图片描述
条件语句
在这里插入图片描述
循环
while先检测循环条件,再执行。
do while先执行,再检测。
在这里插入图片描述
for 循环语句是支持迭代的一种通用结构, 利用每次迭代之后更新的计数器或类似的变量来控制迭代次数。

循环与浮点数:
在这里插入图片描述
多重选择:switch
在这里插入图片描述

在这里插入图片描述
break
不带标签的break:跳出循环。
带标签的break:跳出多重嵌套的循环语句。

如for循环有一个标签tar,如果满足if条件就会跳出for循环,因为break tar了。

public static void main(String[] args)
    {

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

注意: 只能跳出语句块,而不能跳入语句块。

continue语句:将控制转移到最内层循环的首部。
还有一种带标签的 continue 语句,将跳到与标签匹配的循环首部。

3.9 大数值

Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。
在这里插入图片描述
一些API:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
试一下BigInteger的威力:

import java.util.*;
import java.math.*;

public class temp
{
    public static void main(String[] args)
    {
        int a = 2000000000;
        BigInteger ans = BigInteger.valueOf(0);
        BigInteger b = BigInteger.valueOf(a);

        for(int i = 0;i < 10; i++)
        {
            ans = ans.add(b);
        }

        //会溢出
        System.out.println(10*a);
        //不会溢出
        System.out.println(ans);
    }
}

输出:

-1474836480
20000000000

3.10 数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
for each循环

for (variable : collection) statement

类比于C++的for(auto u:v)
在这里插入图片描述
数组初始化以及匿名数组
在这里插入图片描述
数组拷贝
在这里插入图片描述
Java与C++的初始化:
在这里插入图片描述
命令行参数
每一个 Java 应用程序都有一个带 String arg[]参数的 main 方法。这个参数表明 main 方法将接收一个字符串数组, 也就是命令行参数。

数组排序
对a数组进行快速排序:

int[] a= new int[10000];
...
Arrays.sort(a);

一些数组API:
在这里插入图片描述
在这里插入图片描述
多维数组
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

karshey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值