第一章:初识计算机和Java语言
一、计算机的体系结构
(一)计算机的基本概念
计算机(Computer)俗称电脑,是现代一种用于高级计算,使用非常广泛的设备,主要由计算机硬件和计算机软件两个部分组成。
计算机硬件是客观存在的各种计算机相关设备(看得见摸得到),而计算机的软件是用于控制各种硬件设备完成各种功能(看得见摸不到)。
(二)常见的主要硬件
1)中央处理器(CPU)
- 是计算机中最核心的部件,类似于人的大脑。
- 是一台计算机运算核心和控制核心,所有运算都由CPU完成。
- 其功能主要是解释计算机指令以及处理计算机软件中的数据。
2)内存
- 是计算机中的存储部件,内存(Memory)也被称为内存储器。
- 用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
- CPU可以直接访问内存的数据,而且效率比较高。(优点)
- 容量小不能实现永久存储,一旦断电会造成数据的丢失。(缺点)
- 时刻记住ctrl+s快捷键进行保存。
3)硬盘
- 是计算机中的存储部件。
- 主要用于永久存放数据内容,容量大且断电不丢失。(优点)
- CPU不能直接访问硬盘中数据,若希望访问则需要先加载到内存中。(缺点)
4)输入输出设备
- 其中键盘叫做标准输入设备,显示器叫做标准输出设备。
5)主板、机箱和电源等辅助设备
(三)常见的主要软件
- 计算机软件(Computer Software)可分为系统软件和应用软件,系统软件就是操作系统,是其他软件的基础。
- 主流的操作系统有:Windows/Unix/Linux/IOS/Android。
计算机的体系结构图
(四)Java开发的常用工具
- 集成开发环境(IDE,Integrated Development Environment ):Jbuilder、NetBeans、Eclipse、MyEclipse、IDEA、…
(五)编写Java程序的流程
拓展:
若编写的Java代码中创建了包,如package com.company.test;
需要使用javac -d . xxx.java进行编译,生成包的文件夹以及xxx.class的字节码文件;
最后使用java 包名.xxx(如:java com.company.test.xxx)进行解释执行,打印最终结果。
打开dos窗口(命令窗口)的方式:
1.Win+R,输入cmd,回车
2…在程序所在路径下,Shift+右键,点击在此处打开命令窗口(win10的是在此处打开Powershell窗口),命令窗口中显示地址直接为程序所在路径
3.在程序所在路径的路径栏上直接输入cmd,回车即可打开命令窗口,命令窗口中显示地址直接为程序所在路径
常用dos命令
二、数据类型
(一)数据类型的分类
在Java语言中数据类型主要分为两大类:
- 基本数据类型(熟记)
byte、short、int、long、float、double、boolean、char - 引用数据类型(了解)
数组、类、接口、枚举、标注
注意:String不是基本数据类型,是引用数据类型
(二)常用的进制
- 在日常生活中采用十进制进行数据的描述,逢十进一,十进制权重是: 100、101、102、…
- 在计算机的底层采用0和1组成的二进制序列进行数据的描述,逢二进一,二进制的权重是20、21、22、…
- 二进制中的最高位(最左边)用于代表符 位,若该位是0则表示非负数,若该位是1则表示负数。
- 八进制和十六进制其实都是二进制的简写。
(三)进制之间的转换
1)正十进制转换为二进制的方式
- 除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将余数逆序排序。
-
4)负二进制转换为十进制的方式
- 先减1再按位取反,合并为十进制整数后添加负
(九)基本数据类型之间的转换
- Java语言中基本数据类型之间的转换方式:自动类型转换和强制类型转换,又称隐式转换和显式转换。
- 其中自动类型转换主要指从小类型到大类型之间的转换。
- 其中强制类型转换主要指从大类型到小类型之间的转换,语法格式如下:
目标类型 变量名 = (目标类型)原类型 变量名; - 强转有风险,操作需谨慎!
3)逻辑运算符的短路特性
- 对于逻辑与运算符来说,若第一个表达式为假则结果为假,此时跳过第二个表达式;
- 对于逻辑或运算符来说,若第一个表达式为真则结果为真,此时跳过第二个表达式;
4)逻辑运算符作用
主要用于连接多个关系运算符作为最终运算的表达式,用于实现多条件的连接。
(五)条件/三目运算符
- 格式:条件表达式表达式1: 表达式2
- 判断条件表达式是否成立,若成立则执行表达式1,否则执行表达式2 。
(六)赋值运算符
- = 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量原来的数值。
- 赋值表达式本身也有值,其本身之值即为所赋之值。
- +=、-=、*=、/=、…
拓展:
- byte b = 1;
b = b + 2; // 错误:不兼容的类型:从int转换为byte可能会有损失 =>byte + int 相加结果还是int类型
b = b + (byte)2; // 错误:不兼容的类型:从int转换为byte可能会有损失 =>byte + byte 相加结果还是int类型,原因是编译器的优化,当byte + byte时,编译器自动将byte类型优化为int类型,再进行加法运算。 - 编译器自动优化为int的原因是,byte的取值范围太小,两个byte相加很容易超过byte的取值范围,从而造成高位溢出,数据的丢失。
- b = (byte)(b + 2); // 强制类型转换,将int类型转换为byte类型
b += 2; // 不会 错,所以此表达式真正等价于b = (byte)(b + 2); 这也是与b = b + 2;表达式的区别所在
(七)移位运算符
- >> 右移运算符,用于将数据的二进制位向右移动,左边使用符 位补充
- >>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0补充。
(九)运算符的优先级
- ()的优先级极高。
- =的优先级极低。
- 若无法确认优先级,则使用()来确保即可。
运算符的优先级列表
总结:- 从操作数个数来看,单目运算符的优先级高于双目运算符的优先级。
- 按照运算符的作用来看,()这种级别最高,之后依次是算数运算符,位运算符,关系运算符,逻辑运算符,赋值运算符。
第四章:流程控制语句
一、分支结构(重点)
(一)分支结构的概念
- 当需要进行条件判断并做出选择时,使用分支结构。
(二)if分支结构
- 判断条件表达式是否成立
=> 若成立,则执行语句块;
=> 若不成立,则跳过语句块;
(三)if else分支结构
- 判断条件表达式是否成立
=> 若成立,则执行语句块1;
=> 若不成立,则执行语句块2;
(四)if else if else分支结构
- 判断条件表达式1是否成立
=> 若成立,则执行语句块1;
=> 若不成立,则判断条件表达式2是否成立
=> 若成立,则执行语句块2;
=> 若不成立,则执行语句块n; - if和else if都需要判断表达式的真假,else不需要,else if和else都必须配合if一起使用,不能单独使用
(五)switch case分支结构
- 计算变量/表达式的数值=> 判断是否匹配字面值1
=> 若匹配,则执行语句块1 => 执行break跳出当前结构
=> 若不匹配,则判断是否匹配字面值2
=> 若匹配,则执行语句块2 => 执行break跳出当前结构
=> 若不匹配,则执行语句块n - switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型。
- switch() case 中,若default位于最后,则加不加break都可以,最终都会结束分支;若default不位于最后,位于其他位置,若不加break,同样会穿透到下面,不会结束分支
二、循环结构(重点)
(一)循环结构的概念
- 在Java程序中若希望重复执行一段代码时,就需要使用循环结构。
- 任何复杂的程序逻辑都可以通过顺序、分支、循环三种程序结构实现。
(二)for循环
- 执行初始化表达式=> 判断条件表达式是否成立
=> 成立则执行循环体=> 修改初始值表达式=> 判断条件是否成立
=> 若不成立,则循环结束
(三)双重for循环的格式
- 执行表达式1 => 判断表达式2是否成立
=> 若成立,则执行表达式4 => 判断表达式5是否成立
=> 若成立,则执行循环体=> 执行表达式6 => 表达式5是否成立
=> 若不成立,则内层循环结束=> 表达式3 => 表达式2是否成立
=> 若不成立,则外层循环结束 - 双重for循环的特点
1、外层循环用于控制打印的行数,内层循环用于控制打印的列数,外层循环改一下,内层循环从头到尾跑一圈。
2、在以后的开发中若需要打印多行多列时,需要使用双重循环。
3、多重循环不宜嵌套太多层,否则效率很低。一般到三重循环即可,最常见的就是双重循环。
(四)while循环
- 判断条件表达式是否成立
=> 若成立,则执行循环体=> 判断条件表达式是否成立
=> 若不成立,则循环结束
(五)while循环和for循环比较
- while循环和for循环完全可以互换,当然推荐使用for循环。
- while循环更适合于明确循环条件但不明确循环次数的场合中。
- for循环更适合于明确循环次数或范围的场合中。
- while(true) 等价于for( ; ; ) 都表示无限循环。
(六)do while循环
- 执行循环体=> 判断条件表达式是否成立
=> 若成立,则执行循环体=> 判断条件表达式是否成立
=> 若不成立,则循环结束 - do-while循环主要用于至少执行一次循环体的场合中。
(七)continue关键字
- continue语句用在循环体中,用于结束本次循环而开始下一次循环。
(八)break关键字
- break用于退出当前语句块,break用在循环体中用于退出循环。
- for( ; ; ) -这种没有循环条件的循环叫做无限循环,俗称“死循环”。
- 在嵌套的循环结构中,break用于退出所在循环体,如果要退出外层循环体,需要使用标 的方式。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!