2.1编写简单的程序
编写程序涉及如何设计算法以及如何将算法翻译成程序指令,即代码。算法描述的是:如果要解决问题,所需要执行的动作以及这些动作执行的顺序。算法可以帮助程序员在使用 程序设计语言编写程序之前做一个规划。
在编写代码之前,以一种算法的形式来勾勒你的程序(或者它潜在的问题),是一 个很好的做法。
当你编写一个程序时,你将一个算法翻译成程序。你已经知道每个 Java 程序都是以一个类的声明开始,在声明里类名紧跟在关键字 class 后面。
假设你选择 ComputeArea 作为这个类的类名。这个程序的框架就如下所示
public class ComputeArea {
// Details to be given later
}
变量名应该尽量选择描述性的名字(descriptive name), 而不是用 x 和 y 这样的名字:在这里的例子中,用 radius 表示半径、用 area 表示面积。为了让编译器知道 radius 和 area 是什么,需要指明它们的数据类型,即存储在变量中的数据的类型,是整数、实数,或者其他。这称为声明变量。Java 提供简单数据类型来表示整数、实数、字符以及布尔类型。这些类型称为原始数据类型或基本类型。
public class ComputeArea {
public static void main(String[] args) {
// Step 1: Read in radius
// Step 2: Compute area
// Step 3: Display the area
}
}
2.2 从控制台读取输入
Java 使用System.out 来表示标准输出设备,而用System.in 来表示标准输入设备。默认情况下,输出设备是显示器,而输人设备是键盘。为了完成控制台输出,只需使用 println 方法就可以在控制台上显示基本值或字符串。Java 并不直接支持控制台输人,但是 可以使用 Scanner 类创建它的对象,以读取来自 System.in 的输入,如下所示:
Scanner input = new Scanner(System.ln);
一个Scanner 类 型 的 变 童。整 行 的 Scanner input -new Scanner (System •彳n)表明创建了一个 Scanner 对象,并且将它的引用值陚值给变量 input。对 象可以调用它自己的方法。调用对象的方法就是让这个对象完成某个任务。可以调用nextDouble() 方法来读取一个 double 值,如下所示:
double radius = input.nextDouble();
该语句从键盘读入一个数值,并且将该数值赋给 radius。
Scanner 类在包 java.util 里。它在第丨行被导入。import 语句有两种类型:明确导入 ( specific import ) 和通配符导入(wildcard import)。明场导入是在 import 语句中指定单个的 类。例如,下面的语句就是从包 java.util 中导人 Scanner。
import java.util .Scanner;
通配符导入是指通过使用星号作为通配符,导人一个包中所有的类。例如,下面的语句 导入包:java.util 中所有的类。
import java.util.*;
除非要在程序中使用某个类,否则关于被导人包中的这些类的信息在编译时或运行时是 不被读入的。导入语句只是告诉编译器在什么地方能找到这些类。声明明确导人和声明通配 符导人在性能上是没有什么差别的。
2.3 关键字
Key Word 被高级编程语言赋予特殊含义的一些英文单词,特点 都是小写字母,不能随便使用 不是关键字,但也是具有特殊含义的一些单词,像String,System都是Java内置类,像这种Java自 带类我们也不能随便使用。
2.4 标 识 符
标识符是为了标识程序中诸如类、方法和变量的元素而采用的命名。
指的是在程序中我们程序员为一些数据起的名称,自定义名称
类名,变量名,函数名(主函数的名称main 虽然不是关键字 本身标识符 但是比较关键 对于JVM主 函数只认main)
起名规则:
- 由数字、字母和下划线_和美元符$组成,其中数字不能开头,必须是一个连续的词
- 严格区分大小写
- 不能使用关键字和Java内置类的名称
起名规范(最主要的含义就是通过单词的组成从而可以更快地看出数据所代表的含义):
- 变量/函数:第一个单词首字母小写,其他单词首字母大写 myAge yourFriend test() getName() 类
- 接口:所有单词的首字母大写,System String MyClass Demo
- 常量:所有字母大写,单词和单词之间用 _ 分隔,MAX_VALUE PI
- 包名:所有字母小写,单词与单词之间用 . 分隔(文件层级) haha.lala.xixi
2.5 变量
变量用于表示在程序中可能被改变的值。
变量被用于存储程序中后面要用到的值。它们被称为变 量是因为它们的值可以被改变。
变量用于表示特定类型的数据。为了使用变量,可以通过告诉编译器变量的名字及其可 以存储的数据类型来声明该变量。 变量声明 告知编译器根据数据类型为变量分配合适的内存空间。
在赋值给变量之前,必须声明变量。方法中声明的变量在使用之前必须被斌值。 任何时候,都要尽可能一步完成变量的声明和斌初值。这会使得程序易读,同时避免程序设计错误。
变量的使用范围 是指变量可以被引用到的程序的部分。
2.6 赋值语句和赋值表达式
赋值语句将一个值指定给一个变量。在 Java中赋值语句可以作为一个表达式。 声明变量之后,可以使用域值语句(assignment statement) 给它赋一个值。在Java中, 将等号( = )作为赋值操作符(assignment operator)。
表达式(expression) 表示涉及值、变量和操作符的一个运算,它们组合在一起计算出一个新值。
变量也可用在表达式中。变量也可以用于 = 操作符的两边
1nt y = 1; // Assign 1 to variable y
double radius * 1.0; // Assign 1.0 to variable radius
int x = 5 * (3 / 2); // Assign the value of the expression to x
x = y + 1; // Assign the addition of y and 1 to x
double area = radius * radius * 3.14159;// Compute area
要给一个变量赋值,变量名必须在賦值操作符的左边。
赋值语句本质上就是计算出一个值并将它赋给操作符左边变量的一个表达 式。由于这个原因,赋值语句常常称作赋值表达式(assignment expression)。
2.7 命名常置
—个变量的值在程序执行过程中可能会发生变化,但是命名常量(named constant) 或简称常量,则表示从不改变的永久数据。
- 从数据量的角度而言,表示不变的量
- 从代码的角度而言,就是直接在程序中出现的数据也称之为叫字面量
- 还有一种是通过变量的形式 将一个具体的常量值给它符号化 PI
- 从生活的角度而言,常量就是指拥有唯一且特殊含义的名称
在Java当中都有哪些常量 :
- 整数常量
- 浮点型常量
- 布尔型常量
- 字符型常量
- 字符串常量
public class Sample {
public static void main(String[] args) {
//整数常量
System.out.println(10); //十进制
System.out.println(0b1001); //二进制
System.out.println(077); //八进制
System.out.println(0xFFF); //十六进制
//浮点型常量
System.out.println(3.14); //正常小数
System.out.println(0.123e3);//科学
//布尔常量 表示真 假 true false
System.out.println(true);
System.out.println(false);
//字符型常量 由一个字母或数字字符或标点符号被''包含的数据
//System.out.println('12'); //error
System.out.println('a'); //第97号编码
System.out.println('我');
System.out.println(' ');
//System.out.println(''); //error
//System.out.println('''); //error
System.out.println('\'');
System.out.println('\\');
// \\u 在Unicode字符集中 取编号为00AF的字符
System.out.println('\u00AF');
//字符串常量 指一段文本信息
//由若干个字母 数字 标点符号 组成
System.out.println("abcd");
System.out.println("ab");
System.out.println("");
}
}
2.8 数据类型
数据类型主要决定的是变量存储值的大小限制和可变化的常量类型,也决定了变量的类别。
在Java当中,数据类型分两大类别
基本数据类型(数据 值 直接存在变量空间里)
整型
- byte 1字节 8比特 256种 -128~127 -2^7 ~ 2^7 - 1
- short 2字节 16比特 65536种 -32768 ~ 32767 -2^15 ~ 2^15 - 1
- int 4字节 32比特 默认使用 整型常量默认int类型
- long 8字节
浮点型
- float 4字节
- double 8字节
- 浮点型常量默认double
布尔型
- boolean 不确定
字符型
- char 2字节 0~65535 因为编码都是正数还有零
引用数据类型(数据值存在堆内存,变量空间里存的是数据值在堆内存中的地 址 )
- 字符串
- 数组
- 对象
2.9 运算符
算数运算符
- 加法 +
- 减法 -
- 乘法 *
- 除法 /
- 取余 %
- 自增 i++ ++i
- 自减 i-- --i
赋值运算符
- +=
- -=
- *=
- /=
- %=
- =
逻辑运算符 两边一定是布尔 结果一定是布尔
- & 单与
- | 单或
- ! 非 取反
- && 双与
- || 双或
- ^ 异或
与:有假则假 全真则真
或:有真则真 全假则假
异或:相同为假 不同为真
比较运算符 :目前而言 俩边一定是数值 结果一定为布尔 > < <= >= != ==
移位运算符 & | ^ >> <<