Java学习笔记-基本程序设计结构

2020-11-04 14:08:38 浏览数 (1)

使用集成开发环境

Eclipse

新建项目
  1. File-New-Project
  2. 对话框中选择Java Project
  1. 点击Finish

Virtual Studio Code

  1. 安装扩展包Java Extension Pack
  2. Ctrl-Shift-D 根据提示生成launch.json配置文件
  3. F5运行程序

第一段Java程序

代码语言:javascript复制
// Welcome/Welcome.java
public class Welcome{
    public static void main(String [] args){
        String greeting = "Welcome to Spaceack's blog";
        System.out.println(greeting);
        for(int i=0; i<greeting.length(); i  )
            System.out.print("=");
        System.out.println();
    } 
}
程序解读

关键字public称为访问修饰符(access modifier)用于控制程序其它部分对这段代码的访问级别。

关键字class表明Java程序中的全部内容都包含在类中。

class后面是类名,命名规范类名首字母大写,建议使用骆驼命名法。

源代码的文件名需与公共类名相同,并用.java作为扩展名。

main方法必须声明为public

Java中所有的函数都属于某个类的方法,因此main方法必须有一个外壳类。每个Java应用程序都必须有一个main方法, 声明格式:

代码语言:javascript复制
public class ClassName{
    public static void main(String[] args){
        program statements
    }
}

void表示这个方法没有返回值。如果main方法正常退出,Java应用程序退出代码为0。若想终止程序时返回其他代码,需要调用System.exit方法。

每个程序块使用{}括号包裹,每条语句使用;分号结束。

输出语句使用了System.out对象,并调用了println方法。

.点号用于调用方法,通用语法为object.method(parameters)

易错点

  1. 需要注意大小写, 类名首字母大写 Welcome
  2. 编译时只需指定类名javac Welcome,不要带扩展名.java.javac

注释

单行注释

多行注释

文档注释 可以生成文档

数据类型

Java中规定8种基本类型(primitive type)4种整型,2种浮点型,1种表示Unicode编码的字符型,和一种表示真值的boolean类型。

Java整型

类型

存储

取值

科学

byte

1字节

-128~127

2^7

short

2字节

-32768~32767

2^15

int

4字节

-2147483648~2147483647(错过20亿)

2^31

long

8字节

-9223372036854775808~9223372036854775807

2^63

  1. 长整型数值有一个后缀Ll(4000000000L)
  2. 十六进制数值有一个前缀0x0X(0xCAFE)
  3. 八进制有个前缀0(010 表示对应八进制中的8)
  4. 二进制数值前缀0b0B(0b1001就是9)
  5. 数字字面量加入下划线使之更易读:1_000_000(0b1111_0100_0010_0100_0000)表示一百万。

浮点类型

类型

存储

取值

float

4字节

约 ±3.40282347E 38F(有效位数6~7位)

double

8字节

约 ±1.79769313486231570E 308(有效位数15位)

  1. float类型的数值有一个后缀fF。没有后缀的浮点数默认为double类型
  2. 表示溢出和出错情况的三个特殊的浮点数值
    • 正无穷大,对应常量Double.POSITIVE_INFINITY
    • 负无穷大,Double.NEGATIVE_INFINITY
    • NaN, Double.NaN eg: 一个正整数除0的结果为正无穷大。计算0/0或者负数平方根的结果为NaN。
  3. 使用Double.isNaN()方法判断是否等于Double.NaN
  4. 浮点数值表示使用二进制系统表示,会有误差。金融计算应使用BigDecimal类。

char类型

使用单引号''包裹,例如'A'是编码值为65所对应的字符常量。与被双引号包裹的"A"不同,它是包含一个字符A的字符串。

char类型可以表示十六进制值,范围从u0000Uffff。例如u2122表示注册符号,u03C0表示希腊字母π

转义序列u可以出现在加引号的字符常量或字符串之外(其他转义序列不可以)例如 u005Bu005D[]的编码。

代码语言:javascript复制
public static void main(String u005Bu005D args)

其它特殊字符转义序列

转义序列

名称

Unicode值

b

退格

u0008

t

制表

u0009

n

换行

u000a

r

回车

u000d

双引号

u0022

单引号

u0027

//

反斜杠

u005c

System.out.println("u0022 u0022");的输出会是""吗?不是的, 会输出一个空字符串。

需要小心注释中的u, // Look inside c:users 会产生语法错误,因为u后面并未跟着4个十六进制数。

Unicode

码点(code point): 指与一个编码表中的某个字符对应的代码值。

在Unicode标准中,码点采用16进制书写,并加上前缀U ,egU 0041A的码点。

Unicode码点可以分成17个代码级别(code plane)。第一个代码级别称为基本的多语言级别(basic multilingual plane), 码点从U 0000U FFFF,包括经典的Unicode代码。其余的16个级别码点从U 10000U 10FFFF,包括一些辅助字符(supplementary character)

UTF-16编码采用不同长度的编码表示所有的Unicode码点。在基本的多语言级别中每个字符用16位表示,通常被称为代码单元(code unit)辅助字符采用一对连续的代码单元进行编码。这样构成的编码值落入基本的多语言级别中空闲的2048字节内,通常被称为替代区域(surrogate area)

在Java中,char类型描述了UTF-16编码中的一个代码单元。

强烈建议不要在程序中使用char类型。建议使用字符串作为抽象数据类型处理。

boolean类型

  1. boolean类型有两个值:falsetrue,用来判定逻辑条件。
  2. 整型和布尔值之间不能相互转换。

变量

  1. Java中每个变量都有1个类型(type),在声明变量时,变量的类型位于变量之前。以分号结束。
  2. 可以使用任何有意义的Unicode字符组成变量名。若想知道该Unicode字符是否可以用作变量名,可以使用Character类的isJavaIdentifierStartisJavaIdentifierPart方法来检查。
  3. 不要使用$字符,它只用在Java编译器或其它工具生成的名字中。
  4. 建议逐一声明(各一行)可以提高程序的可读性。
  5. 变量名建议小写字母,多个单词组成的变量名从第二个单词开始首字母大写。

变量初始化

声明变量后,必须使用赋值语句对变量显式初始化。

变量的声明尽可能地靠近变量第一次使用的地方。

利用关键字指示常量。eg:

关键字可以设置一个类常量,允许一个类中的多个方法使用,常量还被声明为public, 其它的类也可以使用这个类常量:

被赋值后不能再更改。

建议常量名使用全大写。

运算符

算术运算符

符号

含义

使用

例子

-

*

/

操作数都是整数时,表示整数除法,否则表示浮点数除法

50/2=7, 15.0/2=7.5

%

求余(取模)

15%2=1

数学函数

代码语言:javascript复制
double x = 4;
// sqrt方法 求平方根 
double y = Math.sqrt(x); // 2.0
// pow方法 指数运算 y的x次方
double p = Math.pow(y, x) //16.0
// foorMod方法 取模运算
double m = Math.floorMod(4, 3) //1.0
代码语言:javascript复制
// 使用静态导入,调用时省略Math
import static java.lang.Math;
System.out.println(PI);
double s = sin(toRadians(30));
System.out.println(PI);

类型转换

  • 虚箭头转换可能会有精度损失
  • 两个操作数,需要转换为同一类型才能运算。

强制类型转换

使用圆括号包裹要转换的目标类型,后面紧跟需要变换的变量名。

自增运算符

“后缀”形式

代码语言:javascript复制
int n = 2;
int b = 2 * m  ; // n is 3, b is 4;

“前缀”形式, 先加1。

代码语言:javascript复制
int m = 2;
int a = 2 *   m; // m is 3, a is 6

建议不在表达式中使用 ,会让人迷惑。

关系和布尔运算符

符号

含义

举例

==

相等

!=

不相等

<

小于

>

大于

<=

小于等于

>=

大于等于

&&

逻辑与

`

`

? :

三元操作符

condition ? expression1 : expression2

  • &&|| 按照短路方式来求值

位运算符

符号

含义

举例

&

and

`

`

or

^

xor

~

not

>>

左移

<<

右移

  • &| 按照短路方式来求值

使用掩码技术可以得到整数中的各个位。

枚举类型

代码语言:javascript复制
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
Size s = Size.MEIUM;

字符串

  • Java字符串就是Unicode字符序列。
  • JAVA没有内置的字符串类型,而是使用标准库中的一个预定义类。
  • 每个由双引号括起来的字符串都是String类的一个序列。
代码语言:javascript复制
String name = "Spaceack";

子串

使用方法提取子串

使用号 拼接两个字符串

多个字符串使用某个定界符连接,可以使用静态方法

检测字符串相等

==

使用equals方法s.equals(t), 相等返回true, 否则返回false

equalsIgnoreCase方法,不区分大小写。

空串与Null串

空串是长度为0的字符串。 使用 if (str.length() == 0)str.equals("")检测。

使用if (str == null)检测Null串

使用if (str != null && str.length() != 0 ) 检测字符串既不是null, 也不为空串。

码点与代码单元

length

代码语言:javascript复制
   String name = "Spaceack?";
   int n = name.length();// 10
   ``` 
- 获取实际长度,即码点数量,可调用:
   ```java
   int cpCount = name.codePointCount(0, name.length()); // 9

s.charAt(n)s.length() - 1

代码语言:javascript复制
char first = name.charAt(0); // S
char last = name.charAt(9); // ?

得到第i个码点,可调用:

控制流程

数组

术语

代码语言:javascript复制
码点(code point): 指与一个编码表中的某个字符对应的代码值。

面向对象程序设计(Object-Oriented Programming, OOP)
lambda表达式(lambda expression)
异常处理(excepion handling)
抽象窗口工具包(abstract window toolkit, AWT)

0 人点赞