一、Java环境的搭建
1.初识JDK和JRE
定义:
JDK:是 Java 开发工具包,它提供了 Java 的开发环境(提供了编译器 javac 等工具,用于将 java 文件编译为 class 文件)和运行环境。
JRE: 是 Java 的运行环境。面向 Java 程序的使用者,而不是开发者。如果你仅下载并安装了 JRE,那么你的系统只能运行 Java 程序。JRE 是运行 Java 程序所必须环境的集合,包含 JVM 标准实现及 Java 核心类库。它包括 Java 虚拟机、Java 平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。
2.安装JDK
注意:
如果你仅仅运行java程序,只用安装JRE即可,但是你要编写Java程序,就必须安装JDK和JRE
JDK安装包中包含了JRE的安装
安装路径建议用默认路径(C:\Program Files\Java\jdk1.8.0_144 和 C:\Program Files\Java\jre1.8.0_144)
如果你要是用自定义路径,建议不要有中文的出现
安装后不会像QQ有开启软件的图标
3.配置环境变量
方法:鼠标右键点击-->此电脑-->属性-->找到高级系统设置里的高级卡页里的环境变量,配置用户变量。
用户变量:只能在当前用户使用
系统变量:切换用户后,还可以使用的变量
建议:将信息配置到用户变量里
变量名 | 变量值 |
---|---|
JAVA_HOME | C:\Program Files\Java\jdk1.8.0_144 |
Path | %JAVA_HOME%\bin |
注意:
注意大小写
JAVA_HOME往往是没有的,就新建即可
Path往往是有的,就追加路径即可
Win7系统的Path中会配置很多路径,路径之间使用英文分号隔开
Path中众多的路径是有优先级别的,越前面,优先级别越高
配置完成后,点确认!!!
系统变量里的Path路径(C:\ProgramData\Oracle\Java\javapath)删掉
%JAVA_HOME%\bin使用名为JAVA_HOME的路径,在此路径后拼接\bin
4.验证环境变量是否配置成功
输入cmd打开命令提示符,分别输入命令如下:
javac -version
java -version
配置不成功的原因:
JDK和JRE安装失败
Path路径配置有误
注意:配置后必须重启cmd
二、第一个Java程序的编写
1.黑窗口中常用命令
命令 | 描述 |
---|---|
cd\ | 返回到根目录 |
d: | 进入到d盘 |
cd 文件夹名 | 进入到相应的文件夹 |
dir | 遍历出该文件夹下所有的文件 |
cls | 清空命令窗口内的内容 |
2.使用记事本编写Java程序
public class Hello{
public static void main(String[] args){
System.out.println("Hello....1");
System.out.println("Hello....2");
System.out.println("Hello....3");
}
}
3.在命令窗口中编译、执行
编译命令:javac Hello.java
执行命令:java Hello
4.程序执行的过程思路
Hello.java——>(1.javac -编译)——>Hello.class——>(2.Java-运行)——>运行程序
5.代码详解
/**
文档注释
作者:小陈
时间:2023年11月28日
内容:Hello代码编写
*/
//公有的类叫Hello
public class Hello{
//公有的静态的无返回值的方法main;
public static void main(String[] args){
//系统输出打印(“内容”)
System.out.println("先努力让自己优秀");
}
}
/*
多行注释
public--公有的 class--类 static--静态的
void--无返回值 String--字符串 String[]--字符串数组
args--字符串数组名
*/
6.代码细节
1.public修饰的类名必须和文件名保持一致
2.Java程序编写中必须区分大小写
3.编写的代码中括号都是成双成对出现的
4.方法里的代码执行顺序都是从上往下执行的
5.方法中的代码又叫执行语句,执行的语句需要用分号结束
三、Java编码规范
1.书写格式
使用tab键来调正代码的格式,让代码更具有层次感,提高代码的规范性和可读性
代码的优先级别:类>方法>执行语句
2.代码注释
理解:部分代码语句较难理解,需要使用注释来加深理解。
注释 描述 //所注释的内容 单行注释 /* 注释内容 */ 多行注释 /**注释内容 */ 文档注释
经典面试题:为什么注释不会编译到class文件中?
注释的作用是为了给程序员看的,系统不能识别注释内容,如果注释可以编译到class文件中,会导致空间浪费。
编译:Java文件---->class文件
反编译:class文件---->Java文件
注意:
1.反编译工具使用Xjad
2.在进行反编译时注释不会随着编译而编译到class文件中
四、path的作用
%JAVA_HOME%/bin --> javac.exe 和 java.exe
在path中配置了某个文件夹,代表在其他任何文件夹里都可以打开配置的文件夹中的文件
注意:
Path可以配置很多路径
Path路径有优先级别
五、Java体系划分
JavaSE -- J2SE --- 核心版本
JavaEE -- J2EE --- 企业版本(做服务端)
JavaME -- J2ME --- 微型版本(做客户端)
注意:JavaME过时了
服务端程序员的学习路线:JavaSE -> JavaEE -> 常用框架 -> 分布式、微服务
客户端程序员的学习路线:JavaSE -> AndroidSDK
六、认识IDE
(一)IDE介绍
IDE(集成开发环境) 就是电脑上编程时用的应用,IDE一般包括:代码编辑器、编译器、调试器和图形用户界面等工具。IDE是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件。
(二)IDE的优缺点
优点:
1.节省时间和精力。IDE的目的就是要让开发更加快捷方便,通过提供工具和各种性能来帮助开发者组织资源,减少失误,提供捷径。
2.建立统一标准。当一组程序员使用同一个开发环境时,就建立了统一的工作标准,当IDE提供预设的模板,或者不同团队分享代码库时,这一效果就更加明显了。
3.管理开发工作。首先,IDE提供文档工具,可以自动输入开发者评论,或者迫使开发者在不同区域编写评论。其次,IDE可以展示资源,更便于发现应用所处位置,无需在文件系统里面艰难的搜索。
缺点:
占用空间较大,有时候人们更愿意使用像vs code这种轻量级代码编辑器,而不是全特性的IDE。
七、编码问题
出现原因:两个端口的编码格式不统一
解决思路:编码和解码格式统一
解决方案一:javac -encoding UTF-8 Test01.java
理解:以UTF-8的编码格式去编译Test01.java
缺点:每次编译都得写-encoding UTF-8,特别麻烦,不推荐
解决方案二:设置notepad++的编码格式为GBK
目的地:设置 -> 首选项 -> 新建 -> ANSI
注意:必须把源文件删除掉,再新建才生效
八、关键字
定义: Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
九、标识符
含义:给类、接口、方法、变量取名字时,使用到的字符序列
//class - 类 public class 类的名字-标识符{ public static void 方法的名字-标识符(String[] 变量的名字-标识符){ } }
//interface - 接口 public interface 接口的名字-标识符{ }
组成部分:“英文大小写字母”或“数字 ”或 “$” 或“ _ ”或 “中文”
注意:
区分大小写
不能以数字开头
不能使用除了$ or _以外的特殊符号
不能使用中文(考虑到编码问题)
十、变量
定义:程序执行过程中可变的量
变量的声明:数据类型 变量名 【=值】;
变量的基本原理:在计算机中的内存 数据类型会声明出 一个空间,然后赋值进去,最后通过变量名(即在内存中的一个地址),查询或者更改。
注意:=为赋值号,将赋值号右边的值赋值给左边的变量
扩展:
1.局部变量:方法中声明的变量
2.局部变量只能在该方法中使用
3.调用方法就会在栈内存中开辟空间,该空间用于存放该方法的局部变量
4.变量相当于存放单个数据的容器,如果要存储多个数据可以使用数组、集合、数据库...
代码实现:
/*
* 变量是程序的基本组成单位
* 不论是使用哪种高级程序语言编写,变量都是其程序的基本组成单位
*
* 变量有三个基本要素:
* 类型 名称 值
*/
public class Test01{
//编写一个main方法
public static void main(String[] args){
//定义了一个变量,类型是 int (整型)。名称为:a,值为:1
int a = 1 ;
//定义了一个变量,类型是 int (整型)。名称为:b,值为:3
int b = 3 ;
//在控制台输出 a 和 b 变量的值
System.out.println(a);
System.out.println(b);
//给 变量b 重新赋值
b = 5 ;
//在控制台输出 b 变量的值
System.out.println(b);
}
}
注意:1.在同一个作用域中,变量不能重复声明
2.变量必须初始化后,才能使用
十一、基本数据类型
(一) 数值类型
整数类型:
byte(字节型)--1字节(-128~127)
short(短整型)--2字节( -32768~32767 )
int(整型)--4字节( -2147483648~2147483647 )
long(长整型)--8字节( -9223372036854774808~9223372036854774807 )
注:
int - 存储整数(整数),不带小数,例如 123 或 -123
long - 类型数据必须以l或者L结尾(整型数据默认是int类型)
(二)浮点类型
浮点类型:
float(单精度浮点型)--4字节( 3.402823e+38 ~ 1.401298e-45 )
double(双精度浮点型)--8字节( 1.797693e+308~ 4.9000000e-324 )
注:
double - 存储带小数的浮点数,例如 19.99 或 -19.99
float - 类型数据要加F或者f结尾(默认浮点数类型是double)
(三)字符类型
字符类型:
char--2字节- 存储单个字符,例如 ‘a’ 或 ‘B’。Char 值用单引号括起来
char类型取值范围 :0~65535
(四)布尔类型
布尔型:
boolean--4字节 - 存储具有两种状态的值:真或假
注意:1. 变量要先初始化,才能使用
-
变量定义的作用域问题,同一个作用域变量名不能重名
十二、基本数据类型转换
(一)自动类型转换
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。 由低字节向高字节的转换 byte->short-> char –>int->long->float->double
自动转型/向上转型:取值范围小 -> 取值范围大
(二)强制类型转换
强制类型转换(显示类型转换),主要用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。 语法格式:目标类型 变量 =(目标类型)源类型变量或常量
强制转型/向下转型:取值范围大 -> 取值范围小
代码实现:
public class Test01{
/**
知识点:基本数据类型的转型 - 自动转型/向上转型
含义:取值范围小 转 取值范围大
数值型的取值范围:byte<short<int<long<float<double
*/
public static void main(String[] args){
byte b = 10;
short s = b;
int i = s;
long l = i;
float f = l;
double d = f;
System.out.println(d);//10.0
//直接将byte类型的数据转换为double类型
byte b1 = 10;
double d1 = b1;
System.out.println(d1);//10.0
}
}
public class Test02{
/**
知识点:基本数据类型的转型 - 强制转型/向下转型
含义:取值范围大 转 取值范围小
数值型的取值范围:byte<short<int<long<float<double
*/
public static void main(String[] args){
double d = 123.123;
float f = (float)d;//1.将double类型的变量d强制转换为float类型的数据 2.将强转后的数据赋值给float类型的变量f
long l = (long)f;
int i = (int)l;
short s = (short)i;
byte b = (byte)s;
System.out.println(b);//123
//直接将double类型的数据转换为byte类型
double d1 = 123.123;
byte b1 = (byte)d1;
System.out.println(b1);
}
}