- 计算机的体系结构(常识)
 - 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 - 97A - 650 - 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]; // 二维数组的底层结构也是一段连续的内存空间,所以每行的列数可以不一样