目录
Day01
JDK简介
一个Java文件(文本文件)需要运行,需要操作系统支持(Java运行环境 JRE: Java Runtime Enviroment)
Jre--->包含了JVM(Java虚拟机--->假象计算机 (有自己的网络,有自己的内存))
www.oracle.com :oracle官网里面提供 jdk(Java development Kit :Java开发工具包)---包含了jre
JDK安装
javac是针对Java源文件进行编译指令!
java是针对 java源文件编号后的字节码文件进行执行的指令!
1)在jdk的bin目录里面新建一个HelloWorld.txt
2)编写Java代码的固定格式
class HelloWorld{ //Java中最基本的单元 "类" 定义格式 class 类名{},建议类名和文件名称的前缀一致
//固定格式:Java程序的入口函数:它是能这个假象计算机(java虚拟机)进行调用的(执行)
public static void main(String[] args){
//Java中固定的输出语句 ""里面的内容不断改动的
System.out.println("helloworld") ; //""称为 "字符串"
}
}
3)将.txt文件扩展名改为 ".java"
4)打开dos窗口(dos控制台) windows键+r键--->输入cmd
5)盘符且为d盘
6)cd 指定目录路径名称,进入多级目录中
7)Javac java源文件名称 对Java文件进行编译过程
8)java .class文件的前缀 java虚拟机要将类进行运行
注意事项
在普通记事本书写java代码,默认保存的字符集utf-8 (一个中文对应是三个字节)
而dos控制台黑窗口里面的默认的字符集格式:"gbk",一个中文对应两个字节
在dos窗口中执行文件如果是"utf-8"出现乱码
补充:
classpath环境变量用于保存一系列类包的途径,它与path环境变量的查看和配置方式完全相同.
Day02
1 计算机概念
俗称"电脑",没有任何软件的计算机 "裸机"!
计算机的分类:
台式计算机,笔记本,大型计算机(公司的机房)
2计算机硬件和软件
硬件:机械,光电元件的物理装置的总称: cpu,电源,主机箱,显卡,键盘,鼠标,主板,显示器....
软件:
系统软件:
pc端: Windows,Linux,Mac
移动端:android,ios
应用软件:
计算机安装的客户端软件:
QQ客户端
微信
yy语音
3软件结构化分
C/S结构
Client/Server:客户端和服务器端的交互
典型特点:
客户端必须升级,才能使用 服务器高版本的功能: 比如QQ
一阶段:网络编程 TCP/IP 建立客户端和服务器通道!(Socket)
B/S结构
Browser/Server:浏览器端和服务器端的交互
二阶段一直到四阶段 以后研究B/S结构
典型的特点:
只要保证计算机上有浏览器,那么就可以访问服务器高版本功能!(浏览器本地可以不升级)
程序员专用浏览器
"firefox 火狐" /谷歌浏览器
4软件开发
就是借助开发工具与计算机语言完成软件的制作过程(制作过程中,需要有计算机语言相关的数据和指令!)
开发工具:
开始---使用notepadd++ 高级记事本(写任何计算机语言代码的会有颜色标记),写代码
使用dos控制台进行编译和运行(javac/java指令)
中期开始:就会使用 idea2021 (自动编译/很智能化)
二阶段:
前端开发工具:HBuilderX或者vscode/webStorm(idea同一个公司的)
5人机交互
人和计算机之间沟通一种方式:
1)图形界面化:无论任何操作系统,都会有图形界面化(简单,直观,易于上手)
2)命令行方式:需要控制台 (Linux系统,Linux控制台终端输入一些命令)
windows系统:打开dos控制台,里面输入一些指令
windows系统打开dos控制台的方式:
1)开始菜单输入cmd---->命令行提示符---->以管理员身份打开
2)推荐方式:
windows+r键--->输入"cmd"--->打开控制台
6JAVA语言发展史
詹姆斯~高斯林 :Java之父 1995年正式推出"Java" "爪哇"
Jdk版本:目前使用的8版本/9版本 自己新特性
Java应用领域:比较广泛 360行几乎全部涵盖进去
Java平台版本(重点)
JAVASE:桌面应用程序 (一阶段)
学习java语法/运算符/流程语句/面向对象的基础/高级特性(集合,io流,多线程,网络编程,反射,jdk新特性....) Java认知
JAVAME:针对嵌入式设备提供一套解决方案
(移动端用到的 早期塞班系统,安卓系统) "看平台"
JAVAEE:针对企业级开发提供一套解决方案 (以后的方向)
二阶段去学习企业级开发的核心技术
Servlet(开源的原生框架 Server Applet:针对服务端程序开发(java服务连接器))
servlet+jsp+jdbc
三阶段:
Spring
SpringMVC
Mybatis
Springboot+vue 前后端分离
四阶段:JavaEE分布式 SpringCloud
7Java语言特点
很多特点 :
安全性,健壮性,分布式....(学习到后期体会)
比较容易理解:
开源----->开发源代码---涉及的Java设计模式/数据结构/算法...
跨平台---->跨操作系统(不同的操作系统上都可以编译和执行 java文件)
jdk安装目录的文件夹以及文件的介绍
8什么是Java中的标识符?它的组成规则有哪些
在Java语言中,给包,类名,接口名,方法名,变量名,常量等等起名字一种"字符序列"
组成规则:
1)见名知意,首字母大写.
2)字母,数字,下划线,美元符号组成,不能用数字开头.
3)不能同关键字重名!
9为什么要配置系统环境变量
?
如果不配置系统环境变量,永远只能在jdk安装目录中bin目录里面去使用javac和java指令,对java编译和运行!
配置是为了让我们在任何目录中都能够使用javac和java指令!
10定义标识符遵循以下原则:
1)包名的所有字母一律小写,如cn.itcast.test.
2)类名和接口名每个单词的首字母都要大写.如ArrayList,Iterator.
3)变量名所有字母都要大写,单词间用_连接.
4)变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写.
5)在程序中,应尽量使用有意义的英文字母单词定义标识符,以便于阅读.
11编写Java程序时,需要注意以下几点:
1)所有的关键字都是小写的.
2)不能使用关键字命名标识符.
3) const和goto保留关键字,虽然Java中没有任何意义,但程序中不能用来作为定义标识符.
4)true,false和null虽然不属于关键字,但它们具有特殊的意义,也不能作为标识符使用.
Day03
常量的分类:
1)字面值常量
字符串常量 "xx"
"字符串"+任何数据或者任何数据+"字符串"="新的字符串", 中间+代表的是"拼接符号"
字符常量 'a'
'a' 97
'A' 65
'0' 48
参与运算找ASII码表的值
整数常量 :
100,进制(二进制,八进制,十进制,十六进制,了解如何进制转换/8421码/有符号位的数据表示法)
小数常量 3.14
布尔常量:true/false
空常量:null
2)自定义常量 :final关键字
变量
什么是变量?
变量:在程序的执行过程中,其值
变量三要素:
数据类型 变量名 =初始化值;
数据类型 变量名;
变量名 = 值;
数据类型:
基本数据类型:四类八种
整数: byte 1个字节 -128~127
short 2个字节
int:默认 4个字节
long 8个字节 ,定义的时候,初始化值后面必须加标记L或者l
浮点:
float:单精度 4个字节
double:默认双进度 8个字节
字符 char 占2个字节
布尔 boolean 占1个字节
引用数据类型:数组,类,接口
什么隐式转换?
byte,short,char三者之间不转换,一旦参与运算,优先提升int(考点)---long---float----doubel
boolean不参与任何类型转换
什么是显示转换(强转):将大的数据类型转换成小类型
目标数据类型 变量名 = (目标数据类型)(初始化值/或者表达式) ;
定义变量的注意事项:
1)Java语言是一个"强类型"语言,它的语法结构非常严谨,不能重复定义变量
而前端语言:javascript:弱类型语言,是可以重复定义变量;
2)java语言中的所有语句结束了就必须带";"分号
3)定义变量代码书写格式:(代码风格)
建议:一行一个变量,不要所有变量都写在一行上
4)定义变量,但是在使用之前没有初始化,就会报错,系统认为这个变量没值!(仅仅适用于局部变量)
局部变量:在方法(函数)中定义的变量,都是局部变量,必须使用之前给值!
强制转换类型
Java强转类型转换("强转")(显示转换):目的将大的数据类型转换成小的数据类型
语法格式:这个格式不仅仅适用于基本类型,也适用于引用数据类型!
目标数据类型 变量名 = (目标数据类型)(初始化值);
举例:
byte result = a + b ; //
优化为
byte result= (byte)(a+b);
Day04
扩展算术运算符
扩展的算术运算符:++和-- (使用比较多的)
两种用法:
1)单独使用----流程语句中--循环语句使用居多
++或者--在数据的前面:
++或者--在数据的后面:
结论:无论在数据的前面还是数据的后面:都是自增1或者自减1
2)参与运算使用
++或者--在数据的前面:
先进行自增或者自减,然后参与运算
++或者--在数据的后面:
先运算,然后当前变量本身自增或者自减
基本赋值运算符
基本的赋值运算符:=
将=号右边的值赋值给左边指定类型的变量
举例:
int x = 10 ;
将10赋值给int类型的变量x
注意:
=不能写成==,==不能写成= (==是比较运算符)
扩展的赋值运算符
+=,-=,*=,/=,%= :将等号右边的数据和左边的变量值操作,在赋值给左边的变量
举例:
int x = 10 ;
x += 20 ;----->等价于 x = x + 20 ;(前提条件:类型相同)
将=等号左边的变量和右边的值相加在赋值给左边的变量x
关系运算符
关系(比较)运算符(最简单一种运算符)
<,>,<=,>=,==,!=
这些符号连接的表达式无论简单还是复杂的结果都是boolean值!
==:在基本数据类型中,比较两个数据值是否相等
注意事项:
==不能写成 "="
数学表达式
3<=x<=5, 计算机语言中:必须使用逻辑符号连接!
逻辑运算符(重点)
逻辑运算符号(开发中经常用到)
基本的逻辑运算符号:
逻辑与&:具有并列条件,所有的条件必须同时满足才能成立!
特点:有false则false (有一个不满足就不成立!)
&符号连接的左边表达式如果是false,右边依然要执行,效率低!
逻辑或|: 或的关系,只要满足一个条件即可成立
特点:有true,则true
|符号连接的左边表达式如果是true,右边依然要执行,效率低!
逻辑异或^
特点:相同则为false,不同则为true
简单记 男女关系
"男男" "女女" false
"女男" "男女" true
逻辑非!
特点:非true,则false
非false,则true
偶数个非是它本身!
扩展的逻辑运算符:逻辑双与&& 逻辑双或||
逻辑双与&&和逻辑单与&有什么区别?
共同点:有false,则false(并列条件,必须同时满足条件才成立!)
区别:
逻辑单与&:连接的表达式左边如果是false,右边依然要执行
而逻辑双与&& ,连接的表达式如果左边是false,则右边不执行(具有短路效果)
开发中:并列条件逻辑双与&&代替逻辑单与&,因为效率高!
或的条件:优先采用是逻辑双||代替逻辑单或|,效率高!
逻辑双与||:左边为true(有true,则true),右边不执行,具有短路效果!
三目运算符
三元运算符(三目运算符)
还有二目:一个表达式两个变量 x==y
三元运算符的格式:
(表达式)? 执行true的结果:执行false的结果; (后期在jdk源码中会见到)
执行流程:
1)表达式可以简单可以复杂,结果是boolean,判断表达式是否成立
如果成立,则执行true的结果
2)否则不成立,则执行false的结果;
为什么要使用键盘录入数据?
如果直接去定义变量,直接写死了,程序不灵活,jdk提供给我们 "文本扫描器"
可以键盘录入数据,让程序灵活一些
键盘录入数据的操作步骤:
1)在class类的上面书写 导包的格式
固定格式: import java.util.Scanner;(在Java中只要不是java.lang包下的都需要导包)
2)在main方法中,创建文本扫描器 :格式
Scanner 文本扫描器变量名 = new Scanner(System.in) ; 固定格式
3)提示并录入数据(没有提示类型,默认录入int)
System.out.println("请输入一个数据:") ;
int 结果变量= 文本扫描器变量名.nextInt() ; nextInt():文本扫描器提供 录入int数据的方法
4)使用结果变量;
Day05
位运算符
位运算符:它是针对数据直接进行运算的!
基本的位运算符:
位与&:有0,则0
位或|:有1,则1
位异或^:相同则为0,不同则为1
反码~:所有的二进制位全部按位取反,0变1,1变0
位运算符里面的移位运算符
位运算符里面的移位符号(扩展)
<<(左移):
将"<<"左边的数据向左移动指定的位数(补码进行移动),
将高位丢弃掉,空位补0
结论:将"<<"左边的数据乘以2的移动次幂
>>(右移):
将">>"左边的数据使用补码向右移动,如果最高符位是0,左边补0;
如果最高符号位是1,左边补1;
结论:将">>"左边的数据除以2的移动次幂
>>>(无符号右移):
将">>>"左边的数据使用补码向右移动,无论最高符号位是1
还是0,永远左边空位补0;
流程控制语句
Java中流程控制语句:
顺序结构语句
从main方法这个入口进去,代码由上而下依次加载!
特例:
只要在main方法之前,jvm退出了!
jdk提供一个类System.exit(0) ;正常终止jvm(后面常用类中)
选择结构语句
循环结构语句
if语句
选择结构语句之If
三种格式
if(条件表达式){
语句;
}
if(条件表达式){ (开发中使用居多的)
语句1;
}else{
语句2;
}
if(条件表达式1){
语句1;
}else if(条件表达式2){
语句2;
...
...
}else{
语句n;
}
格式1的执行流程
if(条件表达式){
语句;
}
条件表达式成立,则执行语句,否则不执行;
if格式1应用场景:针对单个条件进行判断!
if格式2:
if(条件表达式){ (开发中使用居多的)
语句1;
}else{
语句2;
}
执行流程:
1)首先判断条件表达式是成立,如果成立,则执行语句1
2)否则,不成立,则执行语句2
注意:else后面不能带()
举例:模拟用户登录操作(String类 第三周讲)
1)有两个字符串,分别代表用户名和用户的密码
String username = "admin" ; //用户名
String password = "******" ; //密码
键盘录入的时候,录入用户名和密码,和上面已经存在的用户名和密码进行对比
如果都一致,提示"登录成功",否则登录失败!
提示:
引用数据类型:String代表字符串,比较的时候,比较的是两个内容是否相同
jdk提供了String类的一个方法:字符串1.equals(字符串2)