- 计算机的体系结构(常识)
- Java语言的概述(常识)
- 开发环境的搭建和使用(重点)
- 变量和注释(重点)
- 数据类型
- 运算符
- 分支结构(重中之重)
- 循环结构(重中之重、难点)
- 一维数组
- 二维数组(会用即可)
Java入门篇-编程基础–2天
D1:计算机的体系结构、Java语言的概述、开发环境的搭建和使用、HelloWorld.java、跨平台原理等
D2:变量和注释、8种数据类型、常见的进制及转换、单个字节范围、数据类型的转换等
D3:运算符的符号和功能、分支结构等
D4:for循环结构、break和continue关键字、双重for循环、while等
D5:一维数组的两种声明方式以及增删改查操作、二维数组的两种声明方式等
计算机的体系结构(常识)
一.基本概念
-
计算机俗称”电脑”,是一种被广泛应用于各个领域的设备
-
计算机主要由:硬件+软件
-
计算机硬件:客观存在的各种计算机相关设备
-
计算机软件:用于控制各种硬件设备完成各种功能
二.计算机的体系结构
-
硬件:CPU,内存,硬盘,显卡,键盘,显示器,鼠标…
CPU:中央处理器,是计算机中最核心的部件,相当于人的大脑
主要用于处理各种计算机的指令以及软件中的数据等 inter:i3 i5 i7 i9 手机:高通 骁龙 麒麟980(华为)
内存:是计算机中的存储部件
主要用于临时存放CPU访问的数据内容,CPU直接访问且效率高 缺点:容量小,一旦断电会造成数据的丢失 时刻记得Ctrl+s进行保存
硬盘:是计算机中的存储部件
CPU不能直接访问硬盘中的数据,因此效率比较低 容量大,若断电不会造成数据的丢失
字节:
1Tb = 1021GB 1Gb = 1024Mb 1Mb = 1024Kb 1KB = 1024byte(字节) 通常一个英文字母占1个字节,一个汉字占2个字节 1byte = 8bit(二进制位) 在计算机的底层识别0和1组成的二进制序列
其中键盘叫做标准输入设备,显示器叫做标准输出设备
-
软件:系统软件 和 应用软件
系统软件:
主要指操作系统 Windows/Unix/Linux/iOS/Android
应用软件:
主要指安装在操作系统之上的软件 QQ/迅雷/浏览器/office
-
计算机的体系结构
使用者=>应用软件=>系统软件=>硬件设备
其中系统软件分为:内核(Kernel) 和 外壳(Shell)
Java语言的概述(常识)
一.Java语言的背景
-
20世纪90年代 单片机系统柜 商机 家电设备智能化 sun公司开展绿色计划 詹姆斯-高斯林 1983年c++语言不能跨平台 橡树oak语言 程序员喝咖啡爪哇岛
-
诞生于1995年,该语言之父是詹姆斯-高斯林,之前隶属于sun公司,现在隶属于Oracle公司
二.Java语言的主要版本
-
Java SE:Java平台标准版,主要学习Java语言的语法规范和常见类
-
Java EE:Java平台企业版,主要学习Java项目的后台开发技术,编写B/S架构项目
-
Java ME:Java平台微型版,随着Android平台的迅速普及已经走向淘汰
开发环境的搭建和使用(重点)
一.jdk的下载和安装
-
下载方式
方式一:通过官网下载 <www.sun.com/www.oracle.com>
方法二:搜索下载 jdk1.8
-
安装方式
若下载的是绿色版,则直接解压即可
若下载的是安装版(.exe的),则直接一路点击下一步即可
切记jdk的安装路径中不要有中文
二.安装目录简介
-
bin 二进制 各种.exe(可执行文件)
-
db 微型数据库
-
include 头文件
-
jre Java运行时环境
-
lib 各种库
-
src 源代码(读里面的string.java文件,Java官方写好的)
三.相关的概念(记住)
-
jdk Java开发工具包,只要做Java开发就需要下载和安装该软件
-
jre Java运行时环境信息,无论是开发Java应用还是仅仅运行一个已经开发好的Java应用都必须安装jre(给客户装jre)
-
jvm Java虚拟机,是Java程序与计算机操作系统之间的桥梁
-
javac.exe Java语言的编译器,主要用于将Java源代码进行编译生成字节码文件
-
java.exe Java语言的解释器,主要用于启动Java虚拟机对字节码文件进行解释执行
四.Java程序的编写流程
-
新建文本文档,将文件名由xxx.txt修改为xxx.java
-
使用记事本的方式打开文件,编写Java代码后进行保存
-
启动dos窗口,切换到xxx.java文件所在的路径中
进入文件夹,按住shift右键打开命令行窗口
进入文件夹,在地址栏输入cmd回车
-
使用javac xxx.java进行编译,生成xxx.class的字节码文件
-
使用java xxx进行解释执行,打印最终结果
五.常用快捷键
-
Windows+d
打开桌面 -
Windows+e
打开计算机 -
Windows+l
锁屏 -
Windows+r
打开运行 -
Windows+tab
切换任务 -
alt+tab
切换任务
六.配置环境变量
Path:将javac.exe所在的路径信息复制到Path变量值的最前面,加上英文版的分号,一路确定即可
七.跨平台原理(记住)
由于不同的操作系统中都提供了Java虚拟机进行翻译,因此同一份字节码文件可以在不同的操作系统中执行,从而赢得了”一次编译,到处运行”的美名
八.Java常见的开发工具
-
编辑器: 记事本,Notepad++,EditPlus,UltraEdit
-
集成开发环境: JBuilder,NetBeans,Eclipse/MyEclipse,Idea
九.打印HelloWorld代码
public class HelloWorld/*类名(必须和文件名一致)*/ {/*类体*/
public static void main/*主方法,是程序入口*/(String[] args) {/*方法体*/
System.out.println("HelloWorld!");
}
}
变量和注释(重点)
一.基本概念
-
当需要在Java程序中记录单个数据内容时声明一个变量即可,声明变量的本质就是在内存空间中申请一块存储单元,由于该存储单元的数值可以改变,因此得名”变量”
-
由于存放数据内容的大小不同导致所需存储单元的容量不同,在Java语言中使用数据类型加以描述,为了便于下次访问还需要指定变量的名称
二.变量的声明方式
-
数据类型 变量名 = 初始值;
如: int ia = 10;
-
注意事项
变量在使用之前必须声明,否则报错”找不到符号”
变量在使用之前必须初始化,否则报错”尚未初始化变量”
变量不能重复声明,否则报错”已在方法main(String[])中定义了变量”
三.标识符(变量名)的命名规则
-
要求由数字、字母、下划线及美元$组成,其中数字不能开头 基本上都用字母,偶尔用数字,下划线常用于定义常量,从来不用$ 数字不能开头的根本原因:容易和long类型直接量混淆出错
-
不能死Java中的关键字,所谓关键字就是Java语言中用来表示特殊含义的单词
-
严格区分大小写,长度没有限制但不宜过长
如:name和Name代表不同的标识符,不推荐使用
-
尽量做到见名知意,支持中文但不推荐使用
四.注释
-
//
表示单行注释,从//开始一直到本行末尾的所有内容都是注释 -
/**/
表示多行注释,从/开始一直到/之间的所有内容都是注释 -
/***/
表示多行注释,支持提取内容 -
注意:Java中多行注释的嵌套是不可以的(笔试题)
五.API的使用
-
jdk中带有大量的API类,是有Java系统带来的工具库,这些工具是数以万计的Java官方程序员的技术积累
-
位置: 这些类存储在jre/lib/src等文件中
-
优点: 这些类可以大大简化编程,提高开发效率
-
用法: 使用API类要用import语句导入类
数据类型
一.数据类型基本分类
-
基本数据类型(记住)
byte,short,int,long,float,double,boolean,char
-
引用数据类型(了解)
数组,类,接口,注解,枚举
二.常用的进制
- 进制转换
负十进制转换为二进制:将十进制转换成二进制,按位取反再加1 负二进制转换为十进制:先减1再按位取反,然后合并为十进制整数后添加负号
- 原码、反码、补码
原码:原码就是带符号位的二进制二进制数 反码:正数的反码是其本身,负数的反码是符号位不变,其余位取反 补码:正数的补码是其本身,负数的补码是符号位不变,按位取反再加1
三.单个字节表示的整数范围(重中之重)
-
在计算机中单个字节表示8位二进制位,其中最高位代表符号位,剩下的7位代表数值位,具体表示范围如下:
非负数的表示范围:0000 0000 ~ 0111 1111 => 0 ~ 127 => 2^7-1 负数的表示范围:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0 综上,对单个字节的二进制位来说,所能表示的十进制范围是:-128 ~ 127 => -2^7 ~ 2^7-1
四.整数类型
-
在Java语言中用于描述整数数据的类型有:byte,short,int,long,推荐int类型
-
byte类型在内存空间中占1个字节,表示的范围是:-2^7 ~ 2^7-1 => -128 ~ 127
-
short类型在内存空间中占2个字节,表示的范围是:-2^15 ~ 2^15-1 => -32768 ~ 32767
-
int类型在内存空间中占4个字节,表示的范围是:-2^31 ~ 2^31-1 => 正负二十一亿之间
-
long类型在内存空间中占8个字节,表示的范围是:-2^63 ~ 2^63-1 => 比int类型还大的数
-
在Java程序中直接写出的整数数值叫直接量/字面值/常量,该数据默认为int类型,若希望表达更大的直接量则需要在直接量的后面加上l或者L表示long类型的直接量
-
若希望表示比long类型范围还大的数,则需要借助java.math.BigInteger类型加以描述
五.浮点类型
-
在Java中用于描述小数类型的类型有:float和double,推荐使用double类型
-
float类型在内存空间中占4个字节,叫做单精度浮点数,通常有效到小数点后7位
-
double类型在内存空间中占8个字节,叫做双精度浮点数,通常有效到15位(更精确)
-
在Java程序中直接写出的小数数值叫直接量/字面值/常量,该数据默认为double类型,若希望表达float类型的直接量则需要在直接量的后面加上f或者F表示float类型的直接量
-
由于浮点类型的数据的计算有误差,若希望实现精确运算则需要借助java.math.BigDecimal类型加以描述
六.布尔类型
-
在Java中用于描述布尔类型的类型有:boolean,数值只有:true和false(注意:没有0和1)
-
boolean类型在内存空间中所占的大小没有明确的规定,很多资料认为是1个字节
七.字符类型
-
在Java中用于描述单个字符类型的类型有:char,如:’a’,’1’,’中’等
-
char类型在内存空间中占2个字节,表示16位无符号整数,范围是:0 ~ 65535
-
由于char类型描述的数据内容有限,因此在以后的开发中更多的使用String类型来描述字符串信息
-
在计算机的底层只识别0和1组成的二进制序列,像’a’这样的图案无法存储到计算机中,为了能存储和获取就需要给该图案指定一个编号,该编号就叫做ASCII
a - 97
A - 65
0 - 48
空格 - 32
换行 - 10
-
0011 0000 按整数解析就是48,按字符解析就是’0’
-
转义字符
\
\n
\t
\\
\b
\r
\
\"
八.基本数据类型之间的转换
-
自动类型转换
主要指从小类型到大类型之间的转换
byte -> short/char -> int -> long -> float -> double
-
强制类型转换
主要指从大类型到小类型之间的转换
语法格式:目标类型 变量名 = (目标类型)源类型的变量名
强转有风险,以后开发中尽量少使用!
运算符
一.算数运算符
-
+
-
*
/
%
-
注意
(1)在Java语言中,两个整数相除时,结果只保留整数部分丢弃小数部分
(2)若希望保留小数部分,则处理方式如下:
a.将其中任意一个整数强转为double类型 b.让其中任意一个操作数乘以1.0进行运算即可
(3)0不能做除数,否则编译OK,运行发生ArithmeticException算数异常;0.0可以做除数但结果是无穷
(4)+既可以做算数运算符也可以作为字符串连接符 ,区分方式如下:
只要+两端的操作数中有一个是字符串类型,则按照字符串连接符对待,且连接结果是字符串类型
二.关系/比较运算符
-
>
>=
<
<=
==
!=
是否不等于 -
所有与以关系元素符作为最终运算的表达式结果都是boolean类型,只有true和false
三.自增减运算符
-
++
--
自减运算符,主要用于使得变量自身的数值减1,只需要一个操作符 -
注意
(1)对于变量自身来说,++ia和ia++都实现变量自身数值的加1效果,是等价的
(2)++ia和ia++的区别
++ia表示先让ia自身的数值加1,然后再作为整个表达式的结果 ia++表示先让ia的数值作为整个表达式的结果,然后再让ia自身的数值加1
四.逻辑运算符
-
&&
逻辑与,同真为真,一假为假||
逻辑或,一真为真,同假为假!
逻辑非,真为假,假为真 -
逻辑运算符两端的操作数都是boolean类型的,结果也是boolean
-
逻辑运算符的短路特性
对于逻辑与来说,若第一个条件为假则整个表达式一定为假,第二个条件不用判断
对于逻辑或来说,若第一个条件为真则整个表达式一定为真,第二个条件不用判断
五.条件/三目运算符
-
语法:
条件表达式?表达式1:表达式2
-
判断条件表达式是否成立,若成立执行表达式1,若不成立执行表达式2
六.赋值运算符
-
简单赋值
=
表示赋值运算符,主要用于将=右边的数据赋值给=左边的变量,覆盖原来的数值 -
笔试题
ia == 2; 判断ia的数值是否等于2
2 == ia; 判断2是否等于ia的数值,结果与上述方式等价,但推荐该方式,少写一个=会报错,减少犯错可能性
ia = 2; 将数据2赋值给变量ia,覆盖原来的数值
2 = ia; 编译报错
-
复合赋值
+=
*=
七.常用运算符的优先级
-
()的优先级极高
-
=的优先级极低
-
若实在不确定运算符的优先级,则可以借助()加以确定
分支结构(重中之重)
一.基本概念
- 在某些特殊场合中需要进行判断并作出选择时,就需要使用分支结构
二.if分支结构
-
语法格式
if(条件表达式) { 语句块; }
-
执行流程
判断条件表达式是否成立 => 若成立,则执行语句块 => 若不成立,则跳过语句块
三.if-else分支结构
-
语法格式
if(条件表达式) { 语句块1; }else{ 语句块2; }
-
执行流程
判断条件表达式是否成立 => 若成立,则执行语句块1 => 若不成立,则执行语句块2
四.if-else if-else分支结构
-
语法格式
if(条件表达式1) { 语句块1; } else if(条件表达式2){ 语句块2; } ... else { 语句块n; }
-
执行流程
判断条件表达式1是否成立 => 若成立,则执行语句块1 => 若不成立,则判断条件表达式2是否成立 => 若成立,则执行语句块2; => 若不成立,则执行语句块n
循环结构(重中之重、难点)
一.基本概念
- 在某些特殊场合中需要重复执行一段代码时,借助循环结构加以处理
二.for循环(推荐)
-
语法结构
for(初始化表达式;条件表达式;修改初始值表达式) { 循环体; }
-
执行流程
执行初始化表达式 => 判断条件表达式是否成立 => 若成立,则执行循环体 => 修改初始值表达式 => 判断条件表达式是否成立 => 若不成立,则循环结束
三.break和continue关键字
-
break关键字用于循环中表示跳出当前循环(熟练)
-
continue关键字用于循环中表示结束本次循环继续下一次循环(会用就行)
-
break和continue关键字对分支结构没有意义
四.特殊的循环
-
for(;;) 这种没有循环条件的循环叫做无限循环,俗称”死循环”,用
Ctrl+C
退出 -
通常与break关键字搭配使用
五.双重循环(重点、难点)
-
语法格式
for(初始化表达式1;条件表达式2;修改初始值表达式3) { for(初始化表达式4;条件表达式5;修改初始值表达式6) { 循环体; } }
-
执行流程
执行初始化表达式1 => 判断条件表达式2是否成立 => 若成立,则执行初始化表达式4 => 判断条件表达式5是否成立 => 若成立,则执行循环体 => 执行修改初始值表达式6 => 判断条件表达式5是否成立 => 若不成立,则内层循环结束,也就是外层循环的循环体结束 => 修改初始值表达式3 => 判断条件表达式2是否成立 => 若不成立,则外层循环结束
-
注意事项
(1)外层循环变量动一下,则内层循环变量跑一圈 (2)当需要打印多行多列的数据内容时,可以使用双重for循环 (3)如果break关键字要跳出外层循环,要在外层循环的for前面加'outer:'
六.while循环(重点)
-
语法格式
while(条件表达式) { 循环体; }
-
执行流程
判断条件表达式是否成立 => 若成立,则执行循环体 => 判断条件表达式是否成立 => 若不成立,则循环结束
七.while循环和for循环比较
-
while循环和for循环都是”当型循环”(当条件满足才执行循环体),完全可以互换
-
while(true)等价于for(;;),都表示无限循环
-
while循环主要用于明确循环条件但不明确循环次数的场合中
-
for循环主要用于明确循环次数或范围的场合中
八.循环分支实例
-
猜数字小游戏,生出随机数
// 表示生成0~99之间的整数存放到变量num中 import java.util.Random; Pandom ra = new Random(); int num = ra.nextInt(100);
一维数组
一.基本概念
-
数组:是相同数据类型的多个元素的容器,元素按线性顺序排列
当需要在程序中记录单个数据内容时,则声明一个变量即可;当需要在程序中记录多个类型相同的数据内容时,则声明一维数组即可
所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”)
-
一维数组的本质就是在内存中申请一段连续的存储单元
-
数组名称:便于下次访问该存储空间的数据
-
数组元素:主要指存放到数组中的数据内容
-
数组长度:主要指数组的容量或最多可以存放的元素个数,用
数组名.length
可以获取数组长度 -
数据下标:主要指数组元素的编号,从0开始可以取到长度-1
-
数组操作:对下标的控制,可以通过下标方式访问数组中每一个元素
二.声明方式
-
声明数组语法格式(动态方式)
// 数据类型[] 数组名称 = new 数据类型[数组的长度]; // 如: int[] arr = new int[5]; // 表示声明一个长度为5元素类型为int类型的一维数组(推荐) int num = 5; // 表示声明一个初始值为5的变量 int arr[] = new int[5]; // 不推荐使用,不方便和变量声明区分 // 基本类型的数组(数据元素为基本类型)创建后,其元素的初始值:byte、short、char、int、long为0;float和double为0.0;boolean为false
-
元素的初始化(静态方式)
// 数据类型[] 数组名称 = {元素值1,元素值2,...}; // 如: int[] arr = {10,20,30,40,50}; // 大括号初始化只能用于声明时的初始化,若用于赋值则有编译错误
-
复杂的方式(静态方式,不常用)
int[] arr = new int[]{1,2,3,4,5};
-
数组的增删改查
二维数组(会用即可)
一.基本概念
-
二维数组本质上就由多个一维数组组成(摞在一起)的数组,也就是说二维数组中的每个元素都是一个一维数组,而一维数组中才是数据内容
-
brr.length
表示二维数组的长度,也就是二维数组中元素的个数,也就是一维数组的个数,也就是行数 -
brr[0].length
表示二维数组中第一个元素的长度,也就是第一行的长度,也就是第一行的列数 -
brr[0][0]
表示二维数组中第一行第一列的数据内容
二.声明方式
-
声明语法格式
// 数据类型[][] 数组名称 = new 数据类型[行数][列数]; // 如: int[][] brr = new int[2][3]; // 声明一个具有2行3列元素类型为int类型的二维数组 // 其中行下标的范围是:0~1;列下标的范围是:0~2
-
元素的初始化
// 数据类型[][] 数组名称 = { {初始值1,初始值2,...},...}; // 如: int[][] brr = { {1,2,3},{4,5,6} };
-
二维数组的特殊用法
int[][] brr = new int[3][]; // 声明一个3行暂时还不知道多少列的数组 brr[0] = new int[3]; brr[1] = new int[4]; brr[3] = new int[5]; // 二维数组的底层结构也是一段连续的内存空间,所以每行的列数可以不一样