【根据翁恺老师的零基础学java课程整理的笔记。】
week 1 计算
1.0 计算机和编程语言
计算机- 程序 - 算法
计算机和人类的思维有着明显的区别,计算机的重要特征之一是”重复“。程序是用特殊的编程语言写出来表达如何解决问题的,谈及编程语言,我们不是用编程语言来和计算机交谈,而是描述要求计算如何做事情的过程或者方法。
算法:计算机做的所有事情都叫做计算。计算的步骤就是算法。
程序的执行
解释:借助一个程序,那个程序能试图理解你的程序,然后按照你的要求执行。(下一次执行这个文件,仍然需要同样的步骤)
编译:借助一个程序,就像一个翻译,把你的程序翻译成计算机真正能懂的语言——机器语言——写的程序,然后,这个机器语言写的程序就能直接执行了。(多出了中间文件)
1.1 第一个java程序
tips:eclipse部分快捷操作
- eclipse中输入前几个字母,然后 alt + “/ ”来让eclipse自动为你补全必要的代码,可以快速选定自己需要内容,对于选定内容可以直接双击或者方向键上下移动+回车选定。
- 我们要习惯用键盘来完成各种操作。shift +方向键上下移动选中行,shift + 方向键作于移动选中此行部分内容,选中所需要的内容后,ctrl + “/" 可以注释掉所选中行,再次按下是取消注释。
- debug模式:设置断点是程序调试中必不可少的有效手段,Java调试器每次遇到程序断点时都会将当前线程挂起,即暂停当前程序的运行。可以在Java编辑器中显示代码行号的位置双击添加或删除当前行的断点,或者在当前行号的位置单击鼠标右键,在弹出的快捷菜单中选择“Toggle Breakpoint”命令实现断点的添加与删除。将光标定位在要设置断点的行,按下键盘中的<Ctrl+Shift+B>快捷键也可以添加或删除断点。
读输入
Scanner in = new Scanner(System.in);
System.out.println(in.nextLine());
先将第一行抄在笔记本上,任何需要读用户输入的程序都需要这行。
运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vAXoI9qW-1612447399076)(D:/2020/desktop/typora暂存处/java基础.assets/image-20210116164149009.png)]
- 输入也在终端窗口中运行(eclipse中界面最下方 - Console,即图中1);
- 红色的小方块(图中2)表示程序正在运行;
- 输入是以行为单位进行的,行的结束标志就是你按下了回车键。在你按下回车之前,你的程序不会读到任何东西。
- 新手常犯的一个错误是,当程序没有回应的时候反复地按下运行,界面仿佛没有变化,但是点开图中3中可以看到多个程序在后台运行。
读入一行文字
System.out.println(in.nextLine());
让in这个对象读入下一行的动作,结果交给System.out这个对象去打印一行。
字符串的+
用来连接两个字符串形成更长的。参见代码1-1的16行。
1.2 变量与计算
变量
int price = 0;
这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。变量是一个保存数据的地方,当我们需要在程序里保存数据时,就需要一个变量来保存它。用一个变量保存了数据,它才能参与到后面的计算中,比如计算找零。
变量定义
变量定义的一般形式就是:
<类型名称><变量名称>;
变量的名字
- 变量需要一个名字,变量的名字是一种”标识符“,意思是用它来识别这个或那个的不同的名字。
- 标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字、下划线组成,数字不可以出现在第一个位置上,Java的关键字(有的地方叫作保留字)不可以用作标识符。
-
变量赋值:
赋值和初始化:int price = 0;
这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。price = 0 是一个式子,这里的“=”是一个赋值运算符,表示将“=”右边的值赋给左边的变量。
赋值:和数学不同,a=b在数学中表示关系,即a和b的值一样;而在Java中,a = b 表示要计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。在数学中,a=b和b=a是等价的,而在Java中,两者的意思完全相反。
初始化:当赋值发生在定义变量的时候,就是变量的初始化。虽然Java语言并没有强制要求所有的变量都在定义的地方做初始化,但是要求所有的变量在第一次被使用(出现在赋值运算符的右边)之前被赋值。
变量初始化:
形如 <类型名称> <变量名称> = <初始值>;
如:int price = 0;
int amount = 0;
组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值,如 int price =0,amout = 100;
表达式:“=”是赋值运算符。有运算符的式子就叫做表达式。
变量类型:
int price = 0;
这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。- Java是一种强类型语言,所有的变量在使用前必须定义或者声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。
常量: 固定不变的数,是常数。直接写在程序里,我们称作直接量*(literal)*,更好的方式是定义一个常量,如 final int AMOUNT =100;
final: final是一个修饰符,加在int的前面,用来给这个变量加上一个final(最终的)属性。这个final的属性表示这个变量的值一旦初始化,就不能再修改了。如果你试图对常量做修改,把它放在赋值运算符的左边,就会被Java发现,指出为错误。
public static void main(String[] args) {
System.out.println("你好");
Scanner in = new Scanner(System.in);
// System.out.println("echo:"+in.nextLine());
//我们写代码时候常用这种方式给数据一个“回应”
int price = 0;
int amount = 100;
System.out.print("请输入票面:");
// System.out.println(price);
amount = in.nextInt();
System.out.print("请输入金额:");
price = in.nextInt();
//每次召唤in.nextInt(),它就等待用户输入一个整数
//程序要求读入多个数字时,可以在一行输入中间用空格隔开,也可以在多行输入
System.out.println(amount+"-"+price+"="+(amount-price));
}
代码 1-1
1.3 浮点数
浮点数
带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在Java中你不会遇到定点数。人们借助浮点数这个词来表达所有的带小数点的数。
当浮点数和整数放在一起运算时,Java会将整数转换为浮点数,然后进行浮点数的运算。
double: double的意思是“双”,它本来是“双精度浮点型"的第一个单词,人们用来表示浮点数的类型。
**浮点运算的精度:**浮点计算是有误差的。参见代码2-1中的第7行。
整数:整数类型不能表达有小数部分的数,整数和整数运行的结果还是整数。计算机里会有纯粹的整数这种奇怪的东西,是因为整数的运算比较快,而且占用地方也比较小。其实人们日常生活中大量做的还是纯粹整数的计算,所以整数的用处还是很大的。
其他计算问题:
运算符优先级
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-siSKedLj-1612447399080)(D:/2020/desktop/typora暂存处/java基础.assets/image-20210116183556420.png)]
**单目运算符:**只有一个算子的运算符。
**结合关系:**一般是自左向右,单目+=和赋值=自右向左。
强制类型转换
比如我们如果想把一个浮点数的小数部分去掉,变成整数。
进行强制类型转换的形式是 (类型)值 ,比如 int i = (int)(32/3.0);
强制类型转换只是从那个变量计算出了一个新的类型值,它并不改变那个变量,无论是值还是类型都不改变。
强制类型转换的优先级高于四则运算。
public static void main(String[] args) {
//代码目的:输入表示英尺英寸的两个数,计算处转化后的公制长度身高
int foot;
double inch;
foot =(int)(30/3.0);
//整数除以浮点数得浮点数,结果是10.0,再强制转换成int型
// System.out.println(1.2-1.1);
//因为精度问题,结果并不是我们日常生活中的0.1,可以自己运行感受一下
Scanner in = new Scanner(System.in);
foot = in.nextInt();
inch = in.nextInt();
System.out.println(10/3);
System.out.println("foot="+foot+",inch="+inch);
System.out.println((int)((foot+inch/12.0)*0.3048*100));
}
代码 1-2
;
System.out.println(10/3);
System.out.println(“foot=”+foot+",inch="+inch);
System.out.println((int)((foot+inch/12.0)0.3048100));
}
**代码 1-2**
------