目录
5.编写HelloWorld入门案例,编码的步骤--->编译--->执行的过程
一.计算机基础
1.计算机
计算机是一个能够高速处理海量数据智能电子设备.
由两部分组成:
软件和硬件。
计算机硬件:
概念:由电子,机械和光电元件组成的物理装置的总称!
组成:由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等等!
计算机软件:
两种:
系统软件:
dos系统,windows系统,Linux系统,MAC系统 移动端:Android系统,ios系统
应用软件:
计算机上的安装的客户端软件,QQ,办公软件wps
2.软件结构划分
C/S结构 :Client-Server 客户端和服务器端交互
特点:
客户端软件必须升级才能使用服务器端的高版本功能
典型的应用:QQ客户端,yy语音....
QQ客户端要想去发红包,如果当前版本比较低,必须升级才能使用高版本功能!
B/S结构(架构):Browser-Server 浏览器端和服务器端交互(我们以后B/S结构)
特点:
只要保证你计算机上有浏览器,无论高版本还低版本都能够访问服务器!
典型的网站:
访问网易新闻等等网站(只要你有浏览器)
3.常用的dos窗口命令
dir 罗列当前盘符或者文件夹里面的所有的子文件以及子文件夹的名称(详细信息 创建时间,多个字节)
进入dos窗口:都是在系统盘里面 c:/users/计算机的用户名 --> 盘符切换 盘符号:
cd (change directory改变目录结构)
cd 单级目录(文件夹) 进入指定的目录
cd 多级目录的路径 进入多级目录
cd../cd .. 回退上一级目录
cd\ 或者cd \ :直接回退当前根目录
md 文件夹名称: 创建目录
copy con 源文件的名称 --->回车进入编辑模式,书写完毕,ctrl+z,回车 整个创建完毕
rd 文件夹名称: 删除空目录
rd /s 文件夹名称: 删除带内容的目录(循环是否删除)
rd /s /q 文文件夹名称:暴力删除带内容的目录(不询问)
del 文件名称: 删除文件
cls :清除屏幕
二.Java介绍基础
1.Jvm,Jre,Jdk三者关系以及分别是什么?
jdk > jre > jvm
jdk:
软件开发工具包 Java Development Kit 里面包含了jre以及一些工具tools.jar
Jre:
Java Runtime Environment :Java运行环境,所有的Java应用程序都需要有Jre的支持,jre里面包含了
jvm以及Java程序运行时的核心类库 , jre目录--->lib目录--->rt.jar(jar包里面就很多的类文件)
jvm:
Java Virtual Machine Java虚拟机,它是一个虚构出来的计算机,通过在实际的计算机上模拟各种计算机的功能
栈内存,堆内存,寄存器,方法区,本地方法区,它还有自己的网络,我们Java程序作用在Jvm之上的,jvm就你能够去识别的Java程序的入口,public static void main(String[] args)--->解析程序!
2.Java平台版本
JavaSE:针对桌面应用程序的开发 (标准版)
JavaME:针对嵌入式设备体用的解决方案(小型版) ---移动端Android基于
JavaEE:针对企业级开发的一套解决方案(企业版) :B/S架构 针对前后端的技术完成网站的开发!
3.Java语言特点
简单性 解释性
面向对象 高性能
分布式处理 多线程
健壮性 动态
结构中立 安全性
开源
跨平台
4.javac和java指令
jdk安装目录里面的bin里面的javac.exe / java.exe 两个分别需要在dos窗口去使用,他们一些指令
后缀名文.java文件 ---->通过javac指令,进行编译, javac是编译指令,由jvm编译成---->类名.class文件(称为"字节码文件",jvm能够识别的文件)
再有java指令,运行指令, java 字节码文件的前缀 :运行某个类
5.编写HelloWorld入门案例,编码的步骤--->编译--->执行的过程
//1)在jdk的bin里面下去创建HelloWorld.txt文件 (自己的jdk安装d盘里面的)
//2)编码
//定义一个类:固定写法 class开头 后面跟上类名,类名,见名知意(建议和文件名称一致),多个单词不能有空格
class HelloWorld{
//jvm能够识别的主程序的入口,主方法 ,也是固定写法
public static void main(String[] args){
//jvm进行解析的时候,需要展示数据--java中有固定的的输出语句的语句
System.out.println("helloworld") ;
}
}
//3)将.txt文件--更名为.java文件
//4)windows+r键---输入cmd--->进入dos窗口
// 盘符切换d:-->切换之后 cd jdk安装目录的bin目录
//5)使用javac 进行编译 javac java源文件
javac HelloWorld.java --->回车,如果代码没有问题,就正常出现类名.class文件,如果有问题,会报错,jvm里面打印日志,告诉我们哪一行成问题了
//6)运行这个类 java 字节码文件的前缀名称就是类名
java HelloWorld
三.Java环境变量配置
1.直接配置path
1)将jdk的bin目录的路径复制
win10/win11--->此电脑--->右键----属性----->高级系统上设置---->环境变量
---->系统变量,不要在用户变量找path,在系统变量找path (用户变量,一个计算机可以有多个用户)
path不要删除别的东西,别的东西都是系统配置,谨慎不要随意删除!
将1)里面jdk的bin目录的路径复制过来放在path里面,
2.先配置JAVA_HOME,在配置path
1)赋值jdk安装目录的路径,不是bin目录
2)此电脑---->右键---->选择属性---->高级系统设置---->环境变量---->系统变量
系统变量----->新建一个变量名: JAVA_HOME
3)在path里面 引入JAVA_HOME对应的变量值的路径
path环境变量里面的最前面 %JAVA_HOME%\bin
3.配置classpath,临时环境变量
早期使用的,目的就是为了单纯执行指定的字节码文件!
java 字节码文件的前缀 类名---->jvm在运行这个类,解析这个类---从程序入口main方法进入(固定格式public static void main(String[] args)...)
配置方式:
此电脑--->右键属性--->高级系统设置--->环境变量---->系统变量
新建一个变量名:classpath
变量值:就是指定字节码文件的路径 d:/
执行流程:
现在系统变量的classpath去找,指定路径下是否有字节码文件,如果有,就直接通过java 字节码文件前缀
直接运行;
如果没有,找不到任何字节码文件,它直接提示"错误: 找不到或无法加载主类 HelloWorld"
4.执行流程
1)首先肯定需要在指定目录中找对应的.java文件,
举例:如果.java文件是在D盘根目录下,肯定需要现在这个D盘里面 javac xx.java--->进行编译和运行
如果当前指定目录有这个java文件,直接编译和运行!
2)如果在当前这个指定目录找不到,它就会去系统变量path环境变量里面找 :
jdk安装目录的bin里面去找,如果这里面也没有,最终,提示----"找不到文件!"
四.关键字,标识符,常量,变量
1.注释
/*
多行注释,当加入的字符描述具体信息,不是简单一段话,可以多行注释加入多段内容
*/
//当行注释,简单一句话来描述某段代码,可以使用单行注释
/**
文档注释 :后期解析一些信息的,产生文档信息
*/
2.关键字
定义:被Java语言赋予特定含义的单词,叫关键字!
在高级记事本中,或者开发工具类中,java关键字有有颜色标记
goto/const作为保留字使用
package:包名(文件夹/目录结构) :以后在开发中代码分包,分层的 (真实的意义:在面向对象部分讲解)
class:定义类的格式,Java中最基本单元就是类 固定格式 class 类名{}
public:权限修饰符 (公共的/公开的,任何人都可以访问的),访问权限足够大
还有其他权限修饰符private,protected ,具体的讲解在面向对象部分去讲
static:静态修饰符 (面向对象部分讲解,本身的含义被"共享,共用")
变量里面的基本数据类型都是关键字
3.标识符
Java中的标识符:给包名,类名,接口名,变量名,方法名,常量名,起名字的一种字符序列! (见名知意)
组成规则:
1)可以是0-9的数字
2)可以是英文26个字母
3)可以是$符号
4)可以是_下划线
具体的规定:
1)给包名:文件夹(package 面向对象讲 包的划分的真实含义,项目开发中),包名字母都是小写
单级包: 字母小写 com
xx.java文件
多级包
字母小写,包名和包名之间 使用.隔开
.就是分包,父文件夹下面会有子文件夹
com.qf
xx.java
com文件夹下有一个qf文件夹,里面xx.java文件
2)给类名和接口名字起名字是一致的:遵循大驼峰命名法
类名是单个单词,首字母大写,其余小写
举例:class Student{}//定义学生类
class S{}不会报错,但是代码不规范!
类名是多个单词,每个单词首字母大写,其余小写
举例
class StudentDemo{}
class HelloWorld{}
3)给变量名和方法名 命名的时候,要求一致的: 遵循小驼峰命名法
变量名是单个单词:字母全部小写
举例: int price = 10;
变量名是多个单词:第一个单词全部小写,从第二个单词开始,每个单词首字母大写,其余小写
举例:int applePrice = 7 ;
4)给常量命名
常量名是单个单词:字母全部大写(很少见,开发中,都是多个单词,中间下划线隔开)
常量名多个单词,中间下划线隔开
HELLO_WORLD
5)注意事项
1.起名字,可以数字,但是不能以数字开头
2.Java严格区分大小写,一定要起名字见名知意
3.标识符不能是Java中的关键字
4.常量
4.1定义
定义:在程序过程中,其值不发生改变的量!
分类:
字面值常量:
1)字符串常量:使用英文的符号"" 双引号括起来的任何内容都是字符串
2)字符常量:使用英文的'' 单引号阔括起来的单个字符内容
3)整数常量
4)小数常量
5)布尔常量
6)空常量
自定义常量:
4.2.进制转换
1.默认都是十进制
2.任意进制转到十进制
位权展开法
系数*基数的权次幂相加的结果
例如:
二进制:OB1010 1*2^3 + 0 + 1*2^1* + 0 =10
八进制:O 64 6*8^1 + 4*8^0 = 52
十六进制:OX3c 3*16^1 + 12*16^0 = 60
3.十进制转任意进制
除基取余,除到商为0为止,余数反转!
例如:20
二进制:20/2 = 10 0
10/2 = 5 0
5/2= 2 1
2/2 = 1 0
1/2 = 0 1
10100
4.8421码快速转换
5.变量
5.1 变量的概念:三要素
定义:在程序过程中,其值发生改变的量;
变量的三要素:
1)数据类型
2)变量名
3)初始化值
定义方式:
1)先定义,然后在赋初始化值
数据类型 变量名;
变量名 = 值;
2)要么直接定义时候赋初始化值
数据类型 变量名 = 初始化值;
5.2 变量的数据类型有哪分类?
基本数据类型:
整数类型:byte byte a = 1;
short short a= 1;
int(默认) int a = 1;
long long a = 12134L;
浮点类型:单精度类型float float a = 12.1F;
双精度类型double double a =12.12;
字符类型:char char a = 'a';
布尔类型:boolean 开发中,逻辑判断的true还是false的结果
引用数据类型:数组,类(具体类/抽象类),接口
5.3 变量中的隐式转换/显示转换(强制类型转换)
隐式转换:默认类型的提升,将取值范围小的类型自动提升为 取值类型大的范围。byte、 short 、 char -- > int--->long--->float--->double
显示转换:强制转换,将取值范围大的类型自动提升为 取值类型小的范围
数据类型 变量名 = (数据类型) 被转数据值;
5.4 运算符
5.4.1算术运算符
符号:+(正号,加,连接符),-(负号,减号),*,/,%(取模),++,--
++或者--
1)不参与运算,单独使用
在数据的前面或后面
结论:
无论++或者--在数据的前面还是后面,都是对当前数据进行自增1或者自减1
2)参与运算
在数据的前面
结论:
++或者--在数据的前面,先进行增1或者自减1,然后参与运算!
在数据的后面
++或者--在数据的后面,先运算,然后进行自增1或者自减1 !
5.4.2赋值运算符
符号:= , +=, -=, *=, /=, %=
=为基本的赋值运算符,其他的为扩展的赋值运算符
+=:有一个隐含的默认转换功能。
s+=1等价于
s=(s的数据类型)(s+1);
5.4.3比较运算符
符合:==,!=,<,>,<=,>=
注意:比较运算符的结果都是boolean型。
比较运算符“==”不能误写成“=” 。
5.4.4逻辑运算符
基本的逻辑运算符:
逻辑单与&: (并列关系)
有false,则false;多个并列条件必须同时满足才能成立,否则,不成立!
逻辑单或|: 或的关系
有true,则true,多个条件,有一个满足即可成立!
逻辑异或^:
相同则为false,不同则为true;
逻辑非!:
非true,则false,非false则true
偶数个非是它本身
扩展的逻辑运算符
逻辑双与&&:
连接的表达式如果左边为false,则右边不执行(具有短路效果)
逻辑双或||:
连接的表达式如果左边为true,则右边不执行(具有短路效果)
逻辑双与&&和逻辑单与&的区别?
共同点:
无论是逻辑单与&还是逻辑双与&&都是表达并列关系,而且都是有fasle则false!
不同点:
逻辑单与&:对多个并列条件在执行的时候,效率比较低,因为都需要将这个符号左边的表达式和右边的表达式都需要执行一遍!
逻辑双与&& :连接的表达式如果左边为false,则右边不执行(具有短路效果)开发中扩展的逻辑运算符,代替基本的运算符,执行效率高!
5.4.5位运算符
基本位运算符号:
位与& :有0则0
位或| :有1则1
位异或^:相同则为0,不同则为1
特点:一个数据被另一个数据位异或两次,其值是它本身
反码~ :对这个数据全部按位取反 (0变1,1变0)
位运算符里面的移位符号的特点
<<:左移
将这个数据补码---进行左移,多余的位数(最高位)丢弃掉,在右边补0
结论: 使用<<符号左边的数据乘以2的移动次幂
>>:右移
将数据补码进行右移,最高位是1,左边补1,如果最高位是0,左边补0,多余的位数丢弃掉
结论:将>>左边的数据除以2的移动次幂
>>>:无符号右移
将数据的补码进行右移,将多余的丢弃掉,无论最高符号位是1还是0,左边永远是补0
5.4.6三元运算符
格式:
(表达式)?执行true的结果:执行false的结果;
执行流程:
表达式可以简单可以复杂,如果结果是true成立,则执行成立的结果,否则不成立,则执行false的结果
6.从键盘录入数据
1.导包:位置是在class的上面
import java.util.Scanner ; //用谁导谁
2.创建文本扫描器 ----java中的关键字 new 创建对象
Scanenr 变量名(称为"键盘录入对象名") = new Scanner(System.in); 固定格式 变量名 ,自己起名字
3.友情提示 "请输入一个数据:"
4.通过文本扫描器录入数据 (整数默认int)
int 结果变量名= 变量名.nextInt() ; //.nextInt() :调用文本扫描器的提供功能,录入int类型
5.使用这个结果变量名来进行操作
7.流程控制语句
顺序结构语句 :所有程序都是通过jvm调用main进行的(入口)代码右上而下依次加载,除非在加载后面代码之前,jvm退出了!
选择结构语句 :
if
格式1:
if(表达式){
语句;
} //场景:针对单个情况进行判断
格式2:
if(表达式){
语句1;
}else{
语句2;
}//场景:针对两种情况进行判断
格式3:
if(表达式1){
语句1;
}else if(表达式2){
语句2;
...
}else{
语句n;
}//场景:针对多情况进行判断
switch
循环结构语句
for
while
dowhile