Java
本博客仅用于记录自己学习,为其他人学习提供便利,如有不对,欢迎指正
文内主要参考java core 10 卷I 卷II,java语言程序设计 基础版 进阶版
学习目标
- 编写Java程序完成简单的计算
- 使用Scanner类从控制台获取输入
- 使用标识符命名变量常亮方法和类
- 使用变量存储数据
- 使用赋值语句和表达式编写程序
- 使用常亮存储永久数据
- 按照命名习惯命名类方法和常亮
- 熟悉java的基本数据类型
- 从键盘读入基本数据类型的值
- 使用二元运算符
- 使用Math类的 pow静态方法进行幂运算
- 编写整数字面值浮点数字面值的科学表达式
- 编写数值计算表达式
- 使用System.currnetTimeMillis()获取当前系统时间
- 使用增量赋值操作符
- 区分一元运算符+±- 的前置后置区别
- 使用强制类型转换
- 描述软件开发过程,应用于贷款支付额程序
- 编写程序,计算整钱兑零
- 避免基础错误
1.编写简单的应用程序
计算一个圆的面积.
这个程序的算法过程描述:
- 读入半径
- 利用公式求出面积
- 显示面积
在编写代码之前,以一种算法的形式来勾勒程序,是一个很好的做法
编写一个java程序需要书写一个类,和一个main方法
public class ComputeArea{
public static void main(String[]args){
//1 读入半径
//2 利用公式求出面积
//3 显示面积
}
}
程序需要用户从键盘输入半径,就产生两个步骤
- 读取半径
- 将半径存储在程序中
2.变量
先解决第二步,为了存储半径,需要在内存中占用空间(程序的数据时在内存中),在程序中需要声明一个变量作为符号或标志,来代表存储在计算机内存中的一个值
变量的名字应该见名知意,不应该使用X,Y来代指,使用radius表示半径,使用area表示面积.为了让编译器知道radius和area是什么,需要为变量指定数据类型,Java中有八种基本数据类型:
数据类型 | 最小值 | 最大值 | 默认值 |
---|---|---|---|
byte | -128 | 127 | 0 |
short | -32768 | 32768 | 0 |
int | -2147483648 | 2147483647 | 0 |
long | -9223372036854775808 | 9223372036854775807 | 0 |
float | 1.4E - 45 | 3.4028235E38 | 0.0 |
double | 1.7976931348623157E308 | 4.9E - 324 | 0.0 |
boolean | - | - | flase |
char | 0 | 65535 | /u0000 |
byte short int long 为整数型
float double为浮点型
boolean 为布尔型
char 为字符型
半径应该使用浮点型,可能会存在小数点
声明变量的语法为
数据类型 变量名
double radius;
例如:
int i;
double a;
声明变量后,将会在内存中占用空间,但变量内没有具体的值,需要为变量赋值
语法为:
变量名=字面值;
i=10;
a=10;
radius=10;
声明变量和赋值可连写:
double radius=10;
可以为变量连续赋值 ,赋值运算符= 为右结合运算符,即从右像左运算
int a;
int b=a=10; //将10赋值给a,之后再将a赋值给b
连续赋值必须提前声明,不能连续声明和赋值
int a=b=10; //错误,b需要提前声明
可以连续声明变量
int a,b,c; //同时声明变量a,b,c 没有进行赋值
最常用的是
int a = 0; //数据类型 变量名=字面值;
这样,就声明了一个长度为10的半径
周长为半径*3.14
double area=radius*3.14;
代码为
public class ComputeArea{
public static void main(String[]args){
//1 假设半径为10
double radius=10;
//2 利用公式求出面积
double area=radius*3.14;
//3 显示面积
System.out.println("面积:"+area);
}
}
到此解决了第二步,现在解决第一步从控制台输入
java中使用System.out来表示标准输出设备,System.in来表示标准输入设备,默认情况下输出设备是显示器,输入设备是键盘.
Java不支持直接控制台输入,需要通过Scanner类,创建Scannner类的对象来读取System.in的输入,Scanner类是java预定义的类,使用需要导入
语法:
Scannner input=new Scanner(System.in);
类名 对象名=new 类名(参数);
Scanner input=new Scanner(System.in); //声明创建一个Scanner对象 赋值给input变量,input变量的数据类型是Scanner
对象可以调用自己的方法,可以调用nextDouble方法来获取一个double的值:
double radius=input.nextDouble();
该语句从键盘读取一个值,将数值赋值给变量radius
结合所有步骤代码:
import java.util.Scanner; //使用Scanner类,需要告诉编译器去哪里找到Scanner类,需要将Scanner类导入
public class ComputeArea{
public static void main(String[]args){
//1 读入半径
//1)读取用户输入
Scanner input=new Scanner(System.in);
//2)将数据存储
double radius=input.nextDouble();
//2 利用公式求出面积
double area=radius*3.14;
//3 显示面积
System.out.println("面积:"+area);
}
}
当个用户输入了一个非正确的值,将会引发错误
Java中的运算符
运算符 | 含义 | 计算方向 |
---|---|---|
+ | 加 | 从左向右 |
- | 减 | 从左向右 |
* | 乘 | 从左向右 |
/ | 除 | 从左向右 |
% | 取模 | 从左向右 |
= | 赋值 | 从右向左 |
复习题
- 如何编写一条语句,让用户从键盘输入一个浮点数
Scanner in = new Scanner(System.in);
double aDouble=in.nextDouble(); - Scanner类可以直接使用吗
Scanner类需要导入
import java.util.Scanner
3.标识符
标识符是为了表示程序中的类或方法或变量的元素而采用的命名.
在程序设计语言中,标识符必须遵守命名规则:
- 标识符由字母、数字、下划线_和美元符号$组成.
- 标识符不能以数字开头.
- 标识符不能使用保留字(关键字).
- 标识符不能使用true、false、null.
- 标识符可以是任意长度,但不能太长
java中严格区分大小写
area和Area是两个完全不同的标识符
标识符命名规范(驼峰命名法)
- 类名以大写字母开始,之后每个单词首字母大写如:ComputerArea
- 变量名以首字母小写,之后每个单词首字母大写如: area、radius、othreArea
- 方法名以首字母小写,之后每个单词首字母大写 如:main
- 常量名全部大写,每个单词之间使用_分割如AREA
- 标识符命名应该见名知意,不应该使用抽象的标识符,变量名尽量使用名次,方法名尽量使用动词
复习题
- 以下哪些标识符是合法的?
miles,Test,a++,4a,$4,#a,apps,class,public,int,x
合法:miles,Test,$4,apps,x
符合命名规范的 miles,apps
4.赋值语句表达式
赋值语句将一个指定的值赋值给一个变量,在java中,赋值语句可以使用表达式.
语法:
变量 = 表达式;
表达式中,所涉及的变量、值、运算符他们将计算出结果后赋值给变量.
例如:
int a=1+1;
int b=2;
int sum=a+b;
在java中,=表示赋值运算,表示将右侧的值赋值给左侧的变量,并不是等于
复习题
- 指出代码中的错误
public class Test{
public static void main(String[]args){
int a=b=c=1;//错误,bc没有被声明
System.out.println(a);
}
}
5.常量
常量是一个在程序运行期间不会发生改变的值,命常量代是一个代表不变值的标识符
在程序中π是一个固定不变的值,即常量,当程序反复使用π,又不想重复输入时,可以声明一个常量
语法:
final 数据类型 常量名=字面值;
final P=3.1415926;
使用常量的好处
不必重复的输入同一个值
如果需要修改常量,只需要在赋值位置修改一次
给常量描述会提高程序可读性
使用常量可以避免常量被误修改
复习题
- 使用常量的好处是什么?声明一个int类型的常量SIZE,赋值为20
不必重复的输入一个值,如果需要改常量,只需要在赋值位置修改一次,提高程序的可读性final int SIZE=10;
- 类名,方法名,常量名和变量名的命名习惯是什么?
类名首字母大写,之后每个单词首字母大写,方法名首字母小写,之后每个单词首字母大写,常量名每个字母大写,每个单词使用_分割,变量名首字母小写,之后每个单词首字母大写 - 将以下算法翻译成Java带吗
第一步:声明一个双精度类型变量miles,初始值为100.
第二步:声明一个双精度类型常量KILOMETERS_PER_MILE,初始值为1.609
第三步:声明一个双精度变量kilometers,将miles和KILOMETERS_PER_MILE相城,并将结果赋值给kilometers
第四步:在控制台显示kilometers
第四步之后,kilometers是多少?
public class Test{
public static void main(String[]args){
double miles=100;
final double KILOMETERS_PER_MILE=1.609;
double kilmoeters=miles*KILOMETERS_PER_MILE;
System.out.println(kilmoters);//160.9
}
}