day01
一 : 第一阶段基础语法
1. 基础语法(Java基本概述、注释、关键字、标识符、注释、变量、常量、数据类型、数据类型转换、流程控制、方法、数组)(周考)
2. 核心部分:面向对象(周考)
3. API应用:String、集合体系(数据结构)、IO流(周考)
4. 多线程、线程池、 络编程(聊天室)、Java8新特性(月考)
JAVA语言的发展:
1. 诞生:1994年由詹姆斯·高斯林组建的开发团队开始研发(绿色计划),研发的目的是想要开发一种能够在电子移动设备上使用的框架,最终研发出Oak语言。后面改名成Java
2. 发展: 1996年由sun公司发布 Jdk1.0
2004年发布 JDK1.5,这个是一个里程碑式的版本,这个版本中将Java分为三个不同的体系;目的是:让编程人员使用不同的版本去完成不同的编程需求
JavaSE: 桌面级应用开发(桌面安装程序)
JavaEE:PC端互联 开发( 站开发)
JavaME: 移动应用开发(安卓、IOS开发)
2006年发布6版本(sun公司发布的最后一个版本)
2011年由 oracle 发布 jdk 7
2014年由 oracle 发布 jdk 8(目前市场上主流版本,提供很多提升开发效率的新特性;兰姆达表达式、函数式接口、Stream流等等) ···········
目前最新版本已经是 jdk 16
JAVA语言的特点
1. 开源、开发源代码(免费使用)
2. 跨平台
3. 面向对象
4. 编译性
5. 动态性
JAVA语言的应用:
1. 数据分析(爬虫技术)
2. 游戏开发(我的世界—java)
3. app开发
4. 站开发(服务端开发、后台开发)
Java跨平台的原理:
原理:在Java代码编译成字节码后,针对不同的操作系统营造出相同的运行环境,使得同一套代码可以在不同的操作系统上运行,从而达到跨平台效果
原理:在Java代码编译成字节码后,针对不同的操作系统营造出相同的运行环境,使得同一套代码可以在不同的操作系统上运行,从而达到跨平台的效果JDK:(Java development kit)Java的开发工具包,给编程人员编程中使用的工具就放在这里;例如:编译源码时用的工具 javac.exe;运行代码是使用工具 java.exe;将代码编译成文档时使用工具 javadoc.exe. JRE:(Java Runtime Evrinoment)Java的运行环境,是 Java 程序运行时必须的一个条件JVM:(Java Vitrual Machine)运行 Java 代码时的一个虚拟的计算机,这一块时 Java 实现跨平台的根本
DOS命令的使用
1. 人机交互方式:
① 通过计算机指令实现:复杂、有难度,上手不易;需要记忆大量的计算机指令
② 通过图形化界面实现:简单、方便、操作易上手2.
DOS命令操作方式
① 打开命令提示符: window + r –> cmd –> 回车 开始菜单 –> 搜索 cmd –> 点击命令提示符JDK的安装 JDK安装目录介绍 Java程序的开发 开发的步骤 HelloWorld案例 直接在磁盘地址栏输入 cmd 回车
② 常用的 DOS 命令
切换磁盘路径:盘符 + 冒
显示当前目录下所有的文件:dir
进入某个目录:cd 目录的名字
清空dos命令:cls
创建新目录:md + 目录的名字 或者 mkdir + 目录的名字
删除目录:rd + 目录的名字 或者 rmdir + 目录的名字
删除文件:del + 文件名
退出dos命令:exit
创建文件:echo > 文件名
JDK的安装
1. 下载:www.oracle.com,需注册
2. 安装:尽量不要装在系统盘(尤其是win10系统),安装过程中可以选择安装路径,还有提示是否需要安装独立的JRE,只需按照指示点击安装即可
3. 验证安装是否成功:找到 JDK 的 bin目录打开cmd,在cmd中输入命令 java -version;如果在dos中显示了当前jdk的版本信息表示安装成功;否则就需要卸载重装
4. JDK卸载:控制面板 –> 程序 –> 卸载 –> 重装
JDK安装目录介绍
① bin目录:各类开发工具,都是可执行文件,常见javac、java这些都在此目录下
② db目录:java 自带的一个很小的数据库
③ include目录:c语言头文件,支持Java开发的接口
④ jre:运行环境
⑤ lib:可执行的工具,或者jar包存放的地方
⑥ javafx-src-zip:fx源码
⑦ src.zip:JDK的源码
Java程序的开发步骤
① 创建源文件,用来些 Java 代码的文件
② 写代码
③ 源码编译,将源文件编译为字节码文件;(.java –> .class)使用 javac 命令实现编译 使用方式:javac 源文件名(带后缀)
④ 运行字节码文件;使用 java 命令实现运行 使用方式:java 字节码文件名(不含后缀)
② 写代码
③ 源码编译,将源文件编译为字节码文件;(.java –> .class)使用 javac 命令实现编译 使用方式:javac 源文件名(带后缀)
④ 运行字节码文件;使用 java 命令实现运行 使用方式:java 字节码文件名(不含后缀)
HelloWorld案例
① 在 JDK 的 bin目录中创建源文件
② 写代码
a.先声明一个类:
public class HelloWorld{
}
b.程序执行的入口(main方法):
public class HelloWorld{ public static void main(String[] args) {
System.out.println(“hello world”);
}
}
③ 编译:当前目录下打开cmd,输入命令 javac HelloWorld.java;之后会在当前目录下自动新建一个文件 叫做:HelloWorld.class
④ 运行:直接在当前cmd中,输入命令 java HelloWorld ; 执行程序
环境变量的配置
① 需要找到jdk的bin目录,比较麻烦(配置环境变量来解决)
② 如果代码出现错误,不好发现,不易操作(通过更换编程软件来解决)
③ 格式上不好看。需要手动调整
Path环境变量的配置
① 原因:方便在任意的目录下都你能够访问到需要的命令‘② 配置的方式:
b. 新建系统变量 新建变量名:JAVA_HOME 变量值:JDK安装路径(不带bin目录)例如与:D:javajdk1.8
c. 配置 path 变量
Win7系统:找到系统变量中的 path 变量 –> 双击 –> 按下键盘上的 home 键 –> 鼠标的光标会出现在变量值得最前面,此时添加一个分 “;” –> 在分 的前面添加两个百分 “%” –> 在两个百分 的中间写上 JAVA_HOME –> 在第二个百分 的后面加上“bin”,配置完成,点击确定
Win10系统:找到系统变量中的 path 变量 –> 双击 –> 选择新建 –> 输入%JAVA_HOME%bin –>完成配置,点击确定
Path环境变量配置检测
检测方式:任意的地址打开 cmd ,输入命令 java 或者 javac① 如果出现目录显示,表示成功;
② 如果出现不是内部或者外部命令,则表示配置失败配置失败的处理方式:
在 cmd 中输入 path 命令,查看结果中去查看 jdk 的路径是否正确,然后找到对应的位置进行修改配置成功后:
如果再进行JAVA程序的开发,不需要找 jdk 的 bin 目录,再任意的目录下都可以实现程序的开发
开发软件的安装
软件的介绍
1. 原始的开发软件:记事本、notepad++、Editplus
2. 集成的开发软件:Eclipse(扩展性强、免费)、MyEclispe(自带一些插件、收费)、IDEA(比较人性化、更多的模板、收费、此次选择的软件)
IDEA简介
1. 全名叫做 Intellij IDEA,是 JetBrains 公司研发的供与 java 语言的开发软件,是目前公认Java最好的开发工具,尤其是针对只能代码助手、代码自动提示、代码重构、J2EE的支持、测试单元、Maven、CVS整合等功能更加强大。
2. 下载:官 (正版)、或者百度搜索(破解版)
3. IDEA版本:
a. 旗舰版:功能更全、付费
b. 区版:免费、功能不够齐全
day02
Java注释
① 功能:使用中文对程序中的代码进行解释说明,让编程人员可以更好的理解程序,更好的去梳理程序
② 注释的分类: a. 单行注释:符 为 // , 表示注释当前行符 后面的内容,不能换行
b. 多行注释:符 为 /* ····· */ ,注释的是两个星 中间的内容,可以换行(建议使用这个)
c. 文档注释:符 为 /** ···· */ ,注释的是两个星 中间的内容,可以换行;多用于对类的说明或者对方法的说明
③ 注意: 单行注释和多行注释不参与程序的编译和运行,是写给编程人员自己看的。
文档注释,如果是简单执行程序,那么更多行注释是一样的;如果需要将程序编译成文档时,文档注释就会参与编译 文档注释在编译文档时再来细讲
Java的关键字
① 概念:在当前jdk版本中被赋予了特殊含义或者具有某个特殊功能的英文单词
② 当前具有 48 个关键字,2个保留字(const / goto),所有的关键字英文单词都是小写的,在以后对于变量或者类···等等在进行命名的时候需要避免使用
Java的标识符
① 概念:就是一个不为空的字符序列,用来给类、接口、项目、包、变量、常量、方法进行命名
② 标识符的组成:
a. 可以使所有的大小写英文字母
b. 0 – 9的数字
c. 特殊符下划线“_”、和美元符 “$”
d. 不能以数字开头、也不能组成的英文单词是关键字或者保留字
③ 标识符的命名规范(见名知意)
a. 小驼峰式:一个单词的时候全部小写,2个或者2个以上单词时,从第二个单词开始首字母大写;针对变量、方法
b. 大驼峰式:所有的单词首字母大写其余字母小写;针对接口、类、枚举
c. 全部大写:所有的英文字母都大写;针对常量
d. 使用下划线:如果有2个或者2个以上的单词时,可以使用下划线进行单词之间的区分
Java常量
① 概念:在程序执行过程当中不允许发生改变的数据
② 常量的分类
a. 根据表现形式分类
字面值常量:表示数据本身
符 型常量:表示的是另外一个具体的数据,
在写得时候可能不会知道数据是多少,只有程序运行后才知道符 型常量具体的值;需要先定义才能使用
b. 根据数据类型分类
整型常量:所有的整数
浮点型常量:所有的小数
字符串常量:所有用双引 引起来的字符序列,
字符序列允许为空
布尔型常量:true/false
字符型常量:所有用单引 引起来的单个字符,不能为空
空常量:null,表示当前对象没有分配内存空间
③ 区分以下常量 “”、”true”、”1.0″、5、’56’
符 型常量的定义
① 格式: final 数据类型 常量名 = 值;final:可译为最终的、终态的,不允许进行修改
② 符 型常量在定义的时候,必须赋值
java变量
① 概念:用来表示程序中那些可以发生改变的数据
② 变量的定义 第一种方式:声明和赋值同时进行 数据类型 变量名 = 值;
第二种方式:先声明,再赋值 数据类型 变量名; 变量名 = 值;
一次性定义多个变量(所有的变量必须是同一个类型) 数据类型 变量名1,变量名2,变量名3;
③ 变量的使用:
a. 直接使用变量名来代替内存中的数据,也可以用变量名来修改内存中的数据
b. 没有定义的变量,不允许使用
④ 变量的本质 使用一个固定不变的名字,去表示内存中某个空间,空间内的数据允许修改
⑤ 内存分析
Java的数据类型
① 因为Java属于强类型的语言,在使用内存空间的时候,必须事先声明使用空间的大小,就使用java中预定义好的数据类型来进行空间的声明
② 数据类型的分类 基本数据类型:简单的数据(四类八种)
整型:建议使用 int,因为在 java 内存中整数默认都是 int 类型
浮点型:建议使用 double,因为在 java 内存中浮点数默认都是 double 类型
引用数据类型:数组、对象、类等等复杂的数据 都是存放在堆内存中
类型 | 名字 | 占的字节 | 储存空间 |
整型 | byte | 一个字节 | -128 到 127 |
short | 两个字节 | -2^15 到 2^15-1 | |
int | 四个字节 | -2^31 到 2^31 -1 | |
long | 八个字节 | – 2^63 到 2^63 -1 | |
浮点型 | float | 四个字节 | 1.4E-45 到 3.4028235E38 |
double | 八个字节 | 4.9E-324到1.7976931348623157E308 | |
布尔型 | boolean | 未知 | true /false |
字符型 | char | 两个字节 | -2^15 到 2^15-1 |
变量定义问题处理方案
① 出现问题的原因:都是因为数据超出了范围
② float类型变量定义:需要在数据的后面加上一个F/f
③ long类型变量定义:如果数据超出 int 的范围则需要在数据的后面加上L/l
数据类型的转换
① 出现数据类型转换的原因:数据在运算的时候,不能保证所有的数据都是同一个类型,在运算的时候就需要必要类型之间进行转换② 类型转换的方式
a. 自动转换:由小范围的数据到大范围数据转换时;无需编程人员操作,由系统自主完成 byte
b. 强制转换:从大范围类型到小范围类型的转换;就需要编程人员手动操作 格式:目标数据类型 变量 = (目标数据类型)数据;
注意:强制转换可能会得到错误的数据
③ 注意: 在有 int 或者 int 以下的类型参与运算时,会直接将数据类型变成 int 后再计算, 如果有 int 以上的类型参与运算,会将数据类型变成较大的数据类型再运算;
字符类型的转换
① 计算机中数据在储存和运算时都是二进制补码,如果是字符那么在进行储存或者运算时,会自动的将字符解码;在计算机中进行显示的时候又会进行编码;② 解码:安照一定的规则进行字符到数字的转换
③ 编码:按照一定的规则将数字转换成字符
④ 最开始的规则是由美国研发的一张表,叫做 ascll 表,能够将键盘上的字符转换成对应的数字
⑤ 每个国家自己的编码码都兼容 ascll 表,前 128 个和 ascll 是一样的
字符串类型
① 属于引用数据类型,表示是一个不可变的字符串常量,一旦对该字符串进行操作,实际上并没改变原有的字符串,而是会在内存中重新创建新的字符串
② 定义字符串格式: String str = “ashdahdakhdkahsd%汉字”;
day03
运算符
① 概念:用于变量(常量)运算的符
② 运算符分类:
a. 算术运算符
b. 赋值运算符
c. 比较运算符
d. 逻辑运算符
e. 位运算符(进制的转换,原码、反码、补码)
f. 三元运算符
算术运算符
符 | 名称 | 运算规则 | 备注 |
+ | 加 | 加法运算,字符串拼接,表示整数 | 如果符 的两边任意一边是字符串就是在拼接,拼接后的结果任然是一个字符串 |
– | 减 | 减法运算,表示负数 | |
* | 乘 | 乘法运算 | |
/ | 除 | 除法运算 | |
% | 取余 | 取余数 | 余数的正负只与被除数有关;判断某个数的奇偶;取某个整数的各个位数上的数字;判断是否被整除 |
++ | 自增 | 在原有的基础上自增1 | 符 可以在变量的前面也可以在变量的后面 |
– – | 自减 | 在原有的基础上自减1 | 符 可以在变量的前面也可以在变量的后面 |
自增自减符 位置不同时区别
① 符 可以卸载变量的两边: a++、++a、a–、–a
② 如果自增、自减作为一个独立的表达式,符 的位置在前和在后对于结果没有影响;都在实现自增或者自减
③ 如果在自增或者自减的过程中有参与了其他的运算,这个时候就需要看符 的位置
④ 符 在变量前面的时候,需要先进行自增或者自减再参与运算
⑤ 符 在变量的后面,需要先将值拿出来运算,运算完成后再进行自增或者自减
代码演示
赋值运算符
符 | 名称 | 运算规则 |
= | 赋值 | 将符 右边的数据赋值给左边的变量 |
+= | 加,再赋值 | 先进行左边两边数据加法运算,再将运算的结果赋值给符 左边的变量 |
-= | 减,再赋值 | 先进行左边两边数据减法运算,再将运算的结果赋值给符 左边的变量 |
*= | 乘,再赋值 | 先进行左边两边数据乘法运算,再将运算的结果赋值给符 左边的变量 |
/= | 除,再赋值 | 先进行左边两边数据除法运算,再将运算的结果赋值给符 左边的变量 |
%= | 取余,再赋值 | 先进行左边两边数据取余运算,再将运算的结果赋值给符 左边的变量 |
比较运算符
符 | 名称 | 运算规则 |
== | 等于 | 判断符 两边的数据是否相等;如果符 两边都是基本数据类型,比较的是数据值;如果是引用数据类型,比较的是数据的地址 |
!= | 不等于 | |
>,>= | 大于,大于等于 | 只能用于能够自动转换成数字的类型进行比较,比较的是数值的大小 |
小于,小于等于 | 只能用于能够自动转换成数字的类型进行比较,比较的是数值的大小 |
逻辑运算符
符 | 名称 | 运算规则 | 备注 |
&, && |
逻辑与 | 全真为真,否则为假 | &&具有短路的效果,一旦遇到条件结果为false,会直接返回结果为false,后面的条件不在计算 |
|, || |
逻辑或 | 全假为假,否则为真 | ||具有短路的效果,一旦遇到条件结果为true,会直接返回结果为true,后面的条件不在计算 |
! | 逻辑非 | 取反 |
代码演示
三元运算符
① 符 ::
② 格式: 表达式1 表达式2 :表达式3
③ 运算流程:
先计算表达式1,计算结果要么是true,要么是false
如果表达式1结果为true,就选择计算表达式2,并且将表达式2的结果作为三元运算最终的结果
如果表达式1结果为false,就选择计算表达式3,并且将表达式3的结果作为三元运算最终的结果
④ 注意:
表达式1,必须是 boolean 表达式;通常使用比较运算符来实现
表达式2、表达式3,没有要求类型,但是它俩必须是同一个类型
三元运算的结果需要处理,处理方式:一是直接打印(结果不需要二次使用),而是存储到新的变量中(结果可能被反复使用)
⑤ 案例:比较2个整数的大小,输出较小值;
a. 定义2个整数型变量,值任意给
int a = 10,b = 20;
b. 比较2个数的大小,使用三元运算符来选择比较的结果
a > b b : a; c.
直接输出三元运算的结果,或者将结果存到一个新的变量中,再打印变量
// sout( a > b b : a )
int min = a > b b : a;
sout(min);
进制
常见进制
① 生活中常见的进制:逢XX重新开始计算 十进制 七进制 六十进制 24进制
② 计算机中常见进制
十进制:逢十进1;0,1,2,3,4,5,6,7,8,9,10,11,····19,20······
二进制:逢二进1;0,1,10,11,100,101,······
八进制:逢八进1;0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20········
十六进制:十六进1:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10,11········
十进制与其他进制之间的转换
① 公式:除基倒取余 基:目标进制② 案例:将十进制的数88,分别以八位的二进制、八进制、十六进制表示
二进制:以88作为被除数,循环除以2,一直除到商为0时,将所有余数倒着写出来;0101 1000
八进制:以88作为被除数,循环除以8,一直除到商为0时,将所有余数倒着写出来:130
十六进制:以88作为被除数,循环除以16,一直除到商为0时,将所有余数倒着写出来:58
③ 注意: 当十进制转换为16进制时,10 – 15 之间的数字需要用 a — f 字母来表示
④ 练习: 将十进制 99 分别以八位的二进制、八进制、十六进制表示出来
二进制:0110 0011
八进制:143
十六进制:63
其他进制转换为十进制
① 公式:系数乘以基数的权次幂,再求和系数:当前进制数上的每一位上的数字
基数:当前进制数 权:当前进制数,从右到左,从0开始计数
② 案例:二进制 0100 1001 ,八进制 56 ,十六进制 6d,用十进制数表示出来
0100 1001:1*2^6 + 1*2^3 + 1*2^0 = 73
56:5*8^1 + 6*8^0 = 40 + 6 = 46
6d:6*16^1 + 13*16^0 = 96 + 13 = 109
③ 练习:二进制 0110 1101 ,八进制 76 ,十六进制 dd,用十进制数表示出来
0110 1101 —> 109
76 —> 62
dd —> 221
二进制转其他进制(其他进制转二进制刚好是逆过程)
① 二进制转十进制(系数乘以基数的权次幂,再求和)② 二进制转八进制
规则:将二进制从右往左,3个为一组,计算出数值;不够为时用0补位
案例:0100 1001 –> 001 001 001 –> 111
③ 二进制转十六进制
规则:将二进制从右往左,4个为一组,计算出数值;不够为时用0补位
案例:0100 1111 –> 0100 1111 –> 4f
原码、反码、补码
① 计算机中关于数据的存储和运算使用的都是二进制的补码,原码和反码不是真实存在的,这两个只是为了方便编程人员计算负数的补码臆想出来的;数据有正有负,为了区分,就将二进制的最高位规定位符 位,如果最高位是1则表示负数,最高位为0表示正数。② 正数的原码、反码、补码都是一样的(除基倒取余的方式)
③ 一个负数(默认用8为二进制表示)
传统的方式:
原码:取负数绝对值,再使用除基倒取余的方式算出原码,不够为时最高位补1,其余位补0
反码:原码取反,符 位(最高位不变),其余为1变0,0变成1
补码:反码 + 0000 0001
快速的方式:
牢记 -1 的补码为 1111 1111,负数的补码就在此基础上减去负数的(绝对值-1)
④ 案例:用八位二进制表示十进制数 120(-120) 的原码、反码、补码
二进制补码的运算
① 二进制补码运算时,不要做减法,通通用加法② 例如:实现计算机底层 30 – 50 的过程;
如果使用减法运算:0001 1110 – 0011 0010 会发现不够减,没法借位
使用加法运算: 0001 1110 + 1100 1110 = 1110 1100
位运算
符 | 名称 | 运算规则 |
>> | 右移 | 每移动一位,数值变成原来的1/2;正数最小到0,负数最大到-1 |
左移 | 每移动一位,数值变成原来的2倍;不能超出当前数据的范围 | |
>>> | 无符 右移 | 跟右移一致;不能用来操作负数 |
& | 按位与 | 全真为真,否则为假;1为真,0为假 |
| | 按位或 | 全假为假,否则为真;1为真,0为假 |
^ | 按位异或 | 相同为假,不同为真;1为真,0为假 |
键盘录入
② 键盘录入的步骤
a. 导包:在类的声明上面,使用关键字 import java.util.Scanner
b. 创建键盘录入的对象:Scanner sc = new Scanner(System.in);
c. 来点提示:sout(“请输入数据:”);
d. 接受录入的数据:根据录入数据的类型选择合适的方法来获取数据 整型:int i = sc.nextInt(); 浮点数:double d = sc.nextDouble(); 字符串:String string = sc.next();
e. 对于录入数据的处理
案例:随机录入两个正整数,比较大小,将较大的数据控制台打印
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91764 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!