目录
JDK的简介以及安装
JDK:是java开发工具包,包含了JVM(Java虚拟机)和JRE(Java运行环境)
JVM:Java假想出来的虚拟机 ,javac用来将源代码(.java文件)编译为.class后缀的字节码文件, JVM是用来加载和运行.class字节码文件的。
JRE:Java的运行环境和核心类库 包含JVM,但不包含JDK测试器和其他工具。
总结:JDK包含JRE 和 JVM
JRE包含JVM
Helloworld入门
1>在JDK的lib文件夹下创建.txt文本文档
2>编写代码
class HelloWorld{ /*class是"类"的关键字,类名尽量和txt文件名相同 注意:类名首字母要大写(命名规范)) */ public static void main(String[] agrs){ /* JVM可以调用的Java函数*/ System.out.println("字符串"); /*打印语句,只有"XX"内可以改动*/ } }
3>保存文件并吧后缀.txt改为.java
4>D: 切换到D盘
cd D:\Development\development_software\Java\JDK_8\bin 进入JDK/bin文件夹下
javac HelloWorld.java 进行预编译
java HelloWorld 打印字符串
解决记事本入门HelloWorld乱码问题
win10默认DOS为GBK也就是ANSI格式(一个中文对应两个字节) 而记事本为UTF-8(一个中文对应三个字节)
所以需要吧两者格式统一即可解决问题
而win11DOS则默认为UTF-8 和 记事本统一 就不会乱码
常用DOS命令
盘号: 盘符切换
dir 查看当前文件夹
cd \文件夹 进入文件夹命名
cd.. 退出文件夹命令
cd\ 退出到磁盘根目录
cls 清屏
copy con 创建文件
del 删除指定文件
del *.txt 批量删除文件
md 创建文件夹(目录)
rd 删除目录(目录为空)
rd /s 询问是否删除目录(可以不为空)
rd /s /q 强制删除目录
JDK安装目录文件夹以及文件的介绍
java系统环境变量的配置
两种方法
①
此电脑----->右键属性----->高级系统设置----->环境变量----->系统变量path右键编辑----->JDK/bin目录所在位置
②
此电脑----->右键属性----->高级系统设置----->环境变量----->系统变量新建----->变量名:JAVA_HOME 变量值:JDK所在目录----->系统变量path右键编辑----->%JAVA_HOME%\bin
建议用②:安全 稳定
因为第一种JDK修改要编辑变量path的值,有可能删除重要的环境值
第一种在后边Tomcat服务器的时候第一次启动可能会闪退从而导致服务器启动失败
path以及classpath的运行过程
path环境变量首先会在当前目录(指定目录)去找有没有xxx.java文件,如果有直接编译运行,如果没有,再去path设置里边的路径找(%JAVA_HOME%\bin)
classpath则先从设置的路径找,如果有,直接编译运行,如果没有,会在当前目录找。
关键字
关键字就是Java内定了一些特定的符号,有特殊含义的标识;
class void public final this.......
保留字: goto 、const
标识符
标识符就是给定义的包、类、接口、方法、变量、常量起名字
起名做到四个字 见名知意
标识符规范
可以是0-9数字
可以是字母大小写
可以是&或者_
不可以是关键字和保留字
不可以是数字开头
不可以是其他特殊符号
严格区分大小写
命名规范
当然起名要做到起名规范(阿里规范)
类/接口:“大驼峰”
如果是一个单词:第一个字母大写 eg:Demo
如果是多个单词:每个单词首字母大写 eg:MiddleStudents
方法/变量:“小驼峰”
如果是一个单词:单词全部小写 eg:method
如果是多个单词:第一个单词全部小写,第二个单词开始首字母大写 eg:applePrice
常量:
如果是一个单词:所有单词大写 eg:PAI
如果是多个单词:第一个单词全部大写,用_将后边单词依次连接 eg:YUAN_ZHOU_LV
什么是常量?常量的分类
常量就是程序中不变的量(固定值)
分类
-
- 字面值常量 字符常量 字符串常量
- 整数常量 100
- 小数常量 3.14
- 布尔常量 true/false
- 空常量 null
- 自定义常量
数据类型以及分类
- 基本数据类型
- 整型 byte (1字节) short(2字节) int(默认)4字节 long(8字节)
- 浮点型 float (4字节) double (8字节)
- 字符型 char(1字节)
- 布尔型 boolean(1字节)
- 引用数据类型
数组 ……
进制转换
2进制 由0、1组成
8进制 由0、1、2、3、4、5、6、7组成
10进制 由0、1、2、3、4、5、6、7、8、9组成
16进制 由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F组成
二进制 1000 1111 转换为 8 10 16进制
2进制转8进制 3位一体划分 不够往前补0 010 001 111 2 1 7
2进制转10进制 8421码 依次相加 1000 1111 128+8+4+2+1=143
2进制转16进制 4位一体划分 不够往前补0 1000 1111 8 F
反之除以2求余数 余数反着写即可
什么是变量以及变量定义的注意事项
变量就是在程序中随着操作改变的量
定义变量的三要素
数据类型 变量名 = 初始值;
注意事项:
定义变量不要超过数据类型的承受范围!
定义long型变量 需要在初始值后边加L/l
定义float变量需要在初始值后边加F/f
隐式转换
short byte char 参与运算则优先提升为int
显示转换(强制转换)
指的是大的数据类型转为小的数据类型
举例: byte参与运算时默认提升为int,不可以用byte接收,如果要接收就要强制吧(a+b)的结果转为byte型
byte a = 10;
byte b = 20;
byte c = (short)(a + b) ;
算术运算符
基本的算术运算符:+、-、*、/、%
/运算符 默认取整(java是强类型语言)
%运算符 求余数
赋值运算符
基本赋值运算符:=
int x = 10 ; //将10的值赋给变量x
扩展的赋值运算符
+=、-=、*=、/=、%=
将=右边的值和数据左边的变量操作
int x = 20 ;
x += 10 ; //等价于 x = x +10 ;(前提条件:类型一致)
System.out.println("x的值是"+x)
下边代码1和2那个会编译失败
// 举例说明
short s = 1 ;
s = s + 1 ; //1
s += 1; //2
1会编译失败 因为 是的数据类型为 short 而赋值运算符后边的 s+1操作后会提升为int型(byte、short、char在参与运算时,默认提升为int型!)
所以改正方法
s = (short)s + 1 ;
2会编译通过,且 s = 2;
原因:扩展运算符在参与运算的时候隐藏了强制类型转换! s += 1 等价于 s = (short)s+1;
关系运算符
==、!=、、=
这些符号连接的表达式的结果都是:boolean值!
==不是赋值运算符!
==在基本数据类型中,是比较两个值是否相等
逻辑运算符
&、|、!、^、&&、||
基本的逻辑运算符:
逻辑与 &
:具有并列条件,所有表达式必须同时满足,才可以成立!
特点:有false则falese
逻辑 |
:具有或的关系,表达式中只要有一个为true,结果就为true!
特点:有true,则为true
逻辑异或 ^
:条件表达式中,需要一个为true,一个为false,结果为true!
特点:可以用男女来比喻……同性相斥(false),异性相吸(true)
逻辑!
:与表达式取反
特点:!true 则为false !false则为true
偶数个数!还是它本身 !!true 还是true
逻辑双与 &&
:和逻辑单与&的作用一样,但是具有短路效果
如果表达式左边为false则逻辑双与&&不执行表达式右边的语句
而逻辑单与&左边为false还要执行表达式右边的语句//效率低
逻辑双或 ||
:和逻辑单或|的作用一样,但是具有短路效果
如果表达式左边为true,则逻辑双或||不执行表达式右边的语句
而逻辑单或|左边为false,还要执行表达式右边的语句 //效率低
三元运算符
(表达式) ? 1语句 : 2语句;
执行顺序:
- 表达式的类型要为boolean
- 判断表达式是否成立,true则执行1语句
- 否则执行2语句
扩展的算术运算符
a++ 、a--、++a、--a
单独使用:
++或者--在数据的后边 举例:a++;
++或者--在数据的前边
总结:单独使用的时候,无论在数据的前边还是后边,都是自增1/自减1
参与运算:
++或者--在数据的前边
int a = 10 ;
int b = 15 ;
int c = (++a)+(--b) ; //11+14
System.out.println("c") // 25
++或者--在数据的后边
int a = 10 ;
int b = 20 ;
int c = (a++)+(b--) ; //10+15
System.out.println("c") // 25
总结:
在参与运算时,++或者--在数据之前,则为先自增/自减,再运算
在参与运算时,++或者--在数据之后,则为先运算,再自增/自减
键盘录入数据的步骤和使用
- 第一步 导包 import java.util.Scanner;
- Scanner sc(起名) = new Scanner(System.in);
- sc.nextInt(); //一般在调用sc方法前先提示用户输入
import java.util.Scanner; public class CompareScanner { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个整数:"); int a = sc.nextInt(); System.out.println("请输入第二个整数:"); int b = sc.nextInt(); System.out.println("请输入第二个整数:"); int c = sc.nextInt(); int temp = a>b ? a:b; int max = temp > c ? temp:c; System.out.println("三个数中的最大值为"+max); } }
流程语句_顺序结构
顺序结构语句
从main方法进入,代码从上到下依次执行:
下边的代码最后执行结果为:
1
2
class Demo{ public static void main(String[] agrs){ System.out.println("1") ; System.out.println("2") ; } }
选择语句_if
if语句的三种格式
a.
if(条件表达式){ 语句; //如果表达式为true,则执行此语句! }
b.
if(条件表达式){ 语句; //如果表达式为true,则执行此语句! }
c.
if(条件表达式1){ 语句1; //如果表达式1为true,则执行语句1 }else if(条件表达式2){ 语句2; //如果表达式2为true,则执行语句2 }else if(条件表达式3){ 语句3; //如果表达式3为true,则执行语句3 ... ... ... }else{ 语句n; //如果表达式1-n 都为false,则执行语句n }