文章目录
一、人机交互
1 如何打开CMD窗口?
快捷键 win + R
,输入cmd
2 常用CMD命令
在Windows中,win98之前的操作系统是以非图形化的DOS为基础的,可以叫做DOS命令,到了2000年以后,windows逐渐的以图形化界面为主了,这个时候就不能叫DOS命令了,他只是模拟了DOS环境而已,很多的原本的DOS命令已经无法使用了,所以这个时候叫做CMD命令会更准确一些
常见的CMD命令:
操作 | 说明 |
---|---|
盘符名称: | 盘符切换,E:回车,表示切换到E盘 |
dir | 查看当前路径下的内容,包括隐藏内容 |
cd 目录 | 进入单级目录 |
cd … | 回退到上一级目录 |
cd 目录1\目录2… | 进入多级目录 |
cd \ | 回退到盘符目录 |
cls | 清屏 |
exit | 退出命令提示符窗口 |
在windows操作系统当中,文件名或者文件夹名是忽略大小写的
3 环境变量
如果想要在CMD的任意目录下都可以启动某一个软件,可以把这个软件的路径配置到环境变量中的PATH里面
在启动软件的时候,操作系统会先在当前路径下找,如果在当前路径没有再到环境变量的路径中去找,如果都找不到就提示无法启动
二、Java概述
1 下载和安装
1.1 下载JDK
通过官方网站获取JDKhttp://www.oracle.com
1.2 JDK安装目录
目录名称 | 说明 |
---|---|
bin | JDK的各种工具命令,javac和java就放在这个目录 |
conf | JDK的相关配置文件 |
include | 一些平台特定的头文件 |
jmods | JDK的各种模块 |
legal | JDK各模块的授权文档 |
lib | JDK工具的一些补充JAR包 |
2 HelloWorld小案例
2.1 Java程序开发运行流程
开发Java程序的三个步骤:编写程序,编译程序,运行程序
2.2 HelloWorld案例
新建文本文档文件,修改名称为HelloWorld.java,注意java文件的后缀名为**.java**,输写程序内容
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
编译文件,打开cmd到文件所在位置,执行指令javac HelloWorld.java
,编译后会产生一个class文件(计算机执行的文件)
运行代码,执行指令java HelloWorld
,运行编译之后的class文件
3 配置环境变量
JAVA_HOME:告诉操作系统JDK安装在了哪个位置(未来其他技术要通过这个找JDK)
Path:告诉操作系统JDK提供的javac(编译)、java(执行)命令安装到了哪个位置
4 Java的三大平台
JavaSE
Java语言的标准版,用于桌面应用的开发,是其他两个版本的基础
JavaME
Java语言的小型版,用于嵌入式消费类电子设备或者小型移动设备的开发
其中最为主要的还是小型移动设备的开发(手机),渐渐的没落了,已经被安卓和IOS给替代了,但安卓也是可以用Java来开发的
JavaEE
Java语言的企业版,用于Web方向的网站开发(主要从事后台服务器的开发)
5 Java的主要特性
面向对象、安全性、多线程、简单易用、开源、跨平台
5.1 Java语言跨平台的原理
Write Once Run Anywhere
高级语言的编译运行方式分为:编译型(C++)、解释型(Python)、混合型(Java)
针对于不同的操作系统,Java提供了不同的虚拟机,虚拟机会把Java语言翻译成操作系统能看得懂的语言
5.2 JRE和JDK
JVM(Java Virtual Machine),Java虚拟机
JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具
三、Java基础语法
1 注释
- 单行注释
// 这是单行注释文字
- 多行注释:可以拓展到多行,不能嵌套使用
/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
- 文档注释:只应用于声明之前,会被javadoc工具用于建立自动文档,其中可包括HTML标记
/**
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
2. 关键字
2.1 概念
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
goto和const有保留但没有使用;true/false/null代表字面量值,而非语言结构的一部分
2.2 关键字class
类是Java项目最基本的组成单元,一个完整的Java项目有可能会有成千上万个类来组成的
class后面跟随的是类名,类名后面的大括号表示这个类的内容
public class HelloWorld{
}
3 字面量
数据在程序中的书写格式
字面量类型 | 说明 | 程序中的写法 |
---|---|---|
整数 | 不带小数的数字 | 666,-88 |
小数 | 带小数的数字 | 13.14,-5.21 |
字符 | 必须使用单引号,有且仅能一个字符 | ‘A’,‘0’, ‘我’ |
字符串 | 必须使用双引号,内容可有可无 | “HelloWorld”,“黑马程序员” |
布尔值 | 布尔值,表示真假,只有两个值:true,false | true 、false |
空值 | 一个特殊的值,空值 | 值是:null |
4 变量
- 变量名不能重复
- 在一条语句中,可以定义多个变量,但影响阅读
- 变量在使用之前必须要赋值
5 数据类型
5.1 Java语言数据类型的分类
- 基本数据类型
- 引用数据类型
5.2 基本数据类型
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数 | byte | 1 | 负的2的7次方 ~ 2的7次方-1(-128~127) |
short | 2 | 负的2的15次方 ~ 2的15次方-1(-32768~32767) | |
int | 4 | 负的2的31次方 ~ 2的31次方-1 | |
long | 8 | 负的2的63次方 ~ 2的63次方-1 | |
浮点数 | float | 4 | 1.401298e-45 ~ 3.402823e+38 |
double | 8 | 4.9000000e-324 ~ 1.797693e+308 | |
字符 | char | 2 | 0-65535 |
布尔 | boolean | 1 | true,false |
在java中整数默认是int类型,浮点数默认是double类型
long类型变量需要在数据值后加L后缀(大小写均可),float类型变量需要在数据值后加F后缀(大小写均可)
整数类型和小数类型的取值范围大小关系:
double > float > long > int > short > byte
6 标识符
- 必须由数字、字母、下划线_、美元符号$组成
- 数字不能开头
- 不能是关键字
- 区分大小写
6.1 小驼峰命名法
适用于变量名和方法名
-
如果是一个单词,那么全部小写,比如name
-
如果是多个单词,那么从第二个单词开始,首字母大写,比如firstName、maxAge
6.2.2 大驼峰命名法
适用于类名
-
如果是一个单词,那么首字母大写,比如Demo、Test
-
如果是多个单词,那么每一个单词首字母都需要大写,比如HelloWorld
不管起什么名字,都要做到见名知意
7 键盘录入
使用类Scanner
//导包,其实就是先找到Scanner这个类在哪
import java.util.Scanner;
public class ScannerDemo1{
public static void main(String[] args){
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
//当程序运行之后,我们在键盘输入的数据就会被变量i给接收了
System.out.println("请输入一个数字");
int i = sc.nextInt();
System.out.println(i);
}
}
四、运算符
1 算术运算符
+ - * / %
- 整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参与运算
- 小数直接参与运算,得到的结果有可能是不精确的
可以利用取模来判断一个数是奇数还是偶数
2 隐式转换
隐式转换也叫自动类型提升,指把一个取值范围小的数据或者变量赋值给另一个取值范围大的变量,此时不需要我们额外写代码单独实现,程序会自动实现
两种提升规则
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
取值范围
byte < short < int < long < float < double
3 强制转换
如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量,需要使用强制转换
强制类型转换可能会导致数据发生错误(精度丢失)
格式:(type)expression
public class OperatorDemo2 {
public static void main(String[] args) {
double a = 12.3;
int b = (int) a;
System.out.println(b);//12
}
}
4 字符串的+操作
- 当+操作中出现字符串时,此时就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串
- 当连续进行+操作时,从左到右逐个执行
1 + 2 + "abc" + 2 + 1
//结果为“3abc21”
5 自增自减运算符
++ 自增运算符
– 自减运算符
放在变量的前面,为前置++;放在变量的后面,为后置++
6 赋值运算符
=,把等号右边的结果赋值给左边的变量
public class OperatorDemo6 {
public static void main(String[] args) {
//1.最为简单的赋值运算符用法
int a = 10;//就是把10赋值给变量a
System.out.println(a);
//2.如果等号右边需要进行计算。
int b = 20;
int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量
System.out.println(c);
//3.特殊的用法
a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量
System.out.println(a);//20
}
}
7 扩展赋值运算符
+=、-=、*=、/=、%=
注意: 扩展的赋值运算符中隐层还包含了一个强制转换,a += b 实际上相当于 a = (byte)(a + b)
public class OperatorDemo8 {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
//a += b;
a = (byte)(a + b);
System.out.println(a);//30
}
}
8 关系运算符
关系运算符又叫比较运算符,拿左边跟右边进行判断
分类:
符号 | 解释 |
---|---|
== | 就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false |
!= | 就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false |
> | 就是判断左边是否大于右边,如果成立就是true,如果不成立就是false |
>= | 就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false |
< | 就是判断左边是否小于右边,如果成立就是true,如果不成立就是false |
<= | 就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false |
注意: 关系运算符最终的结果一定是布尔类型的,即true或false
9 逻辑运算符
& 和 |
&:逻辑与(而且),两边都为真,结果才是真,只要有一个为假,那么结果就是假
|:逻辑或(或者),两边都为假,结果才是假,只要有一个为真,那么结果就是真
^(异或)
如果两边相同,结果为false,如果两边不同,结果为true
!(取反)
false取反就是true,true取反就是false
10 短路逻辑运算符
&&
运算结果与&一样,只不过具有短路效果
||
运算结果|一样,只不过具有短路效果
逻辑核心
当左边不能确定整个表达式的结果,右边才会执行;当左边能确定结果,右边不会执行,提高代码运行效率
11 三元运算符
格式:
关系表达式 ? 表达式1 :表达式2 ;
规则:
计算关系表达式的值,如果关系表达式的值为真,执行表达式1;如果关系表达式的值为假,执行表达式2
注意:
三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来
12 运算符优先级
在Java中涉及了很多的运算符,每一种运算符都有各自的优先级
注意小括号优先于所有