一,概述
1.1 什么是程序、什么是程序开发
程序是为了解决生活中的实际问题使用计算机语言所编写的一系列的指令的集合,简单的说就是软件。
程序开发:制作软件
1.2 Java的历史
1995年由SUN开发的。
Java5是2004年发布,Java被Oracle收购
Java8是2014年发布
Java的分类:
- JavaME:小型版,用于嵌入式
- JavaSE:标准版
- JavaEE:企业版
1.3 Java语言的特点
- 面向对象的编程思想
- 跨平台性:跨操作系统,一次编写,到处运行
- 健壮性
- 安全性
二,环境搭建
2.1 JDK的下载
下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
2.2 JDK的卸载
控制面板卸载即可
2.3JDK的安装
2.4 配置环境
JDK:Java Development Kit,Java开发工具
JRE:Java Runtime Enviroment,Java运行环境
JVM:Java Virtual Machine,Java虚拟机
注:JDK包含JRE、JRE包含JVM
问:为什么要配置环境变量?
答:因为要运行java程序,就必须先经历编译的步骤,编译使用的指令是javac,而javac这个指令在jdk安装目录的bin目录下,只有在该目录下才能运行这个指令;实际开发中,我们希望编译的指令在计算机的任何位置都可以使用,所以需要配置环境变量。
配置的步骤:
- 右键“此电脑”,点击“属性”,点击“高级系统设置”,在“高级”标签页中,点击“环境变量”
- 在“系统变量”中,点击“新建”,在“变量名”中输入
JAVA_HOME
,在“变量值”中输入jdk安装的根目录
- 编辑“系统变量”的“Path”中,新建
%JAVA_HOME%\bin
和%JAVA_HOME%\jre\bin
注:win7操作系统,点击“Path”后,在“变量值”的最前面,添加
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
三,第一个Java程序
3.1 编写代码
编写的Java代码的扩展名是
.java
public class Test01{ public static void main(String[] args){ System.out.println("五五开"); } }
3.2 编译代码
需要通过
javac
指令对java文件进行编译,编译后会生成对应的.class
(二进制字节码)文件步骤:
win + r 打开命令提示符,输入cmd,回车
输入:
cd java文件所在位置
来切换执行路径到java文件所在的位置,注:如果在切换路径时也切换了盘符,需要在切换后,再输入一次目标盘符
编译文件
javac 文件名.java
3.3 运行代码
使用
java
指令运行代码:java 文件名(类名)
注:
- 先编译后运行
- 源代码发生改变后,必须重新编译
3.4 注意事项
Java代码应该以
;
或者}
结尾Java中的所有括号必须成对出现
Java中的符号必须是英文的
任何一个程序都必须有一个主函数,主函数也叫程序入口,它必须被定义成如下格式:
public static void main(String[] args){}
一个Java文件中只能有一个类是被public修饰,并且被public修饰的类名必须和文件名一致
四,基础语法
4.1 缩进
每一行在编写时都应该先按一下 tab 键(制表符)
4.2 关键字
概念:在Java中已经预先定义好的具有特殊含义的单词
例如:public、class、static、void、byte、short、int、long、float、double、char、boolean、if、else、switch、case、break、default、do、while、for、continue、return、new、private、interface、abstract、final、try、catch、finally、extends、implements、native、synchronized、native
注:main不是关键字
4.3 标识符
概念:自定义的名字,类名、方法名、变量名都是标识符
规则:
- 由数字、字母、下划线、美元符组成
- 不能以数字开头
- 不能与关键字重名
- 标识符区分大小写
规范:
变量名和方法名:首字母小写,多个单词组成时,从第二个单词起,每个单词的首字母大写(小驼峰)
public void sleep(){} public void goHome(){} int age; int ageOfChild;
类名:每个单词的首字母大写(大驼峰)
常量:所有字母大写,多个单词组成时,单词之间用下划线连接
见明知意、不宜过长
4.4 注释
概念:对代码进行解释说明的文字
格式:
- 单行注释:// 注释内容
- 多行注释:/* 注释内容 */
- 文档注释:/** 注释内容 */
特点:不参与程序的运行
五,变量
概念:计算机内存中的一块存储空间,它是存储数据的基本单元
5.1 变量的定义
方式一:先定义后赋值
格式: 数据类型 变量名; 变量 = 值; 例如:定义一个变量用于记录年龄值 int age;// 定义了一个int类型的变量age age = 23;// 为age变量赋值为23
方式二:定义的同时赋值
格式: 数据类型 变量名 = 值; 例如:定义一个变量用于记录身高值 /** 身高 */ double height = 148.5;// 定义了一个double类型的变量height并赋值为148.5
方式三:同时定义多个变量并赋值
/** a是xxx、b是xxx、c是xxx */ int a = 3,b,c = 5; b = 4;
注:
- 变量在使用前必须先赋值
- 变量可以被多次赋值,赋值后的新值会替换旧值
- 变量不能重复定义
- 变量只能在定义它的代码块中使用,一旦出了定义它的代码块,变量就被释放了
六,数据类型
Java中的数据类型分为:
- 基本数据类型
- 引用数据类型
6.1 基本数据类型(四类八型)
6.1.1 整数类型
byte:字节型,1个字节,范围:-128~127
short:短整型,2个字节,范围:-32768~32767
int:整型,4个字节,默认整型
long:长整型,8个字节
注:int表示的数据如果超过了int范围,需要加上“L”或者“l”
6.1.2 浮点类型
float:单精度浮点类型,4个字节
double:双精度浮点类型,8个字节,默认浮点类型
注:对float进行小数赋值时,需要加上“F”或者“f”
6.1.3 字符类型
char:2个字节,表示单个字符,用一对
单引号
括起来注:
- 只能存储一个字符,可以存储一个汉字
- 不能存储空字符
6.1.4 布尔类型
boolean:只有两个值,分别是:true 和 false
注:
- 布尔值不能参与算术运算
- 布尔值只能参与关系运算、逻辑运算
6.2 引用数据类型
6.2.1 字符串类型
概念:
String
类代表字符串。Java 程序中的所有字符串字面值(如"abc"
)都是字符串。定义:
String 变量 = "值"; 例如:定义一个人的姓名叫张三 String name = "张三";
6.3 转义字符
如果在字符中单独输出一个单引号,或者在字符串中输出一个双引号会编译失败,我们需要对它们进行转义
转义字符:\
常见的转义行为:
\\ \' \" \t:一个制表符 \n:一个换行符
七,运算符
7.1 算术运算符
+:求和运算,如果参与运算的数据中有字符串,那么“+”就是拼接,并且拼接后的结果仍是一个字符串
-:求差
*:求乘积
/:求商,整数之间的除法可能存在精度损失
%:取模,求余数
注:
- a % b,如果 a < b,那么结果就是 a
- a % b,如果 a > b,那么结果是[0,b)
- a % b,结果是正负与 a 一致
++、–:
- ++:自增1
- –:自减1
注:自增自减的前置和后置
- 在单独运算时,前置和后置没有区别
- 在复合运算时,
- 前置:先执行自增(减),再执行其他操作
- 后置:先执行其他操作,再执行自增(减)
7.2 赋值运算符
1. = 2. += 3. -= 4. *= 5. /= 6. %=
例如:
a -= b 等价于 a = a - b
7.3 关系(比较)运算符
关系运算的运算结果一定都是布尔值
1.==:判断相等 2.!=:判断不等 3.> 4.< 5.>= 6.<=
7.4 逻辑运算符
逻辑运算的运算结果一定都是布尔值,参与逻辑运算的数据也必须是一个布尔值
1.&:与,并且,表达式两边只要出现了false,整个表达式的结果就是false 2.|:或,或者,表达式两边只要出现了true,整个表达式的结果就是true 3.!:非,取反,true取反的结果是false,false取反的结果是true 4.^:异或,表达式两边相同,结果是false;两边不同,结果是true
注:
- 多个布尔值参与逻辑仍遵循上述特点
- &&:如果表达式左边是false,那么整个表达式的结果就是false,表达式右边不再运算
- ||:如果表达式左边是true,那么整个表达式的结果就是true,表达式右边不再运算
7.5 三元(目)运算符
格式:
表达式1?表达式2:表达式3
逻辑:当表达式1的结果为true时,执行表达式2;反之,执行表达式3
注:
- 表达式1必须是一个条件表达式
- 表达式2和表达式3可以是一个值,也可以是一个表达式,不能是语句
7.6 位运算(了解)
位运算:
&、|、^、<<
位运算的步骤:
- 将参与运算的十进制数转换程对应的二进制数
- 将转换后的1视为true,0视为false,执行逻辑运算
- 将得到布尔值转换回0或者1
- 将二进制转换回十进制
<<:左移
格式:a << b
表示:a 乘以 2 的 b 次方
7.7 二进制、十进制
二进制 -> 十进制
十进制 -> 二进制
八,类型转换
问:不同数据类型是否可以一起运算?
答:可以的,但是需要遵循一些规则
8.1 自动类型转换
自动类型转换的规则:范围小的数据与范围大的数据运算时,结果会自动转换成范围大的数据类型
范围大小的规则:double > float > long > int > short > byte
问:为什么布尔值和字符值不在规则中?
答:布尔值是逻辑值不能与其他类型运算;字符值是遵循ASCII码表进行转换的。
问:float占用4个字节,long占8个字节,为什么long的范围比float的范围小?
答:不同数据类型占用的字节数和不同数据类型所能表示的数据范围是没有关系的,float能表示的数据范围要比long的更大。
char类型的转换:char类型的值与十进制数的转换是遵循ASCII码表
- 65 ~ 90:‘A’ ~ ‘Z’
- 97 ~ 122:‘a’ ~ ‘z’
- 48 ~ 57 :‘0’ ~ ‘9’
8.2 强制类型转换(向下转型)
格式:
范围小的数据类型 变量名 = (范围小的数据类型)范围大的数据类型的数据;
注:
byte和byte、short和short、byte和short在运算时,会自动转换成int类型
自增、自减自带强制类型转换
+=、-= 等赋值操作自带强制类型转换
int值和char值可以通过强制类型转换实现数据类型的变换,根据ASCII码表进行转换;
汉字与十进制的转换关系在Unicode码表(万国码),它是一张前128位与ASCII码表完全相同,包含了各个国家、地区文字的码表