基本知识
人机交互
图形化界面:操作电脑消耗内存,运行速度慢。
CMD:在windows中,利用命令行的方式操作计算机。
CMD
常用CMD命令:
- 盘符名称+冒号 切换盘符
- dir 查看当前路径下内容(包括隐藏内容)
- cd 目录1\目录2 进入目录2
- cd.. 回退到上级目录
- cd \ 回退到盘符
- cls 清屏
- exit 退出命令提示符窗口
尝试使用cmd打开qq:
- 进入电脑qq安装位置中的bin文件夹,输入qq.exe即可。
- 将qq路径记录在环境变量中,随后进入cmd在任意目录下输入qq.exe即可。
如何配置环境变量: 鼠标右击我的电脑(或Win+e打开我的电脑,在空白处右键),点击属性,进入高级系统设置,选择高级,点击环境变量,进入系统变量中的Path,点击新建以新增路径,最后确定。(配置Path环境变量后,在任意目录下都可以打开指定软件。旧版Java需要自行手动配置环境变量。)
进制
进制讲解
- 二进制:0到1,代码0b开头。
- 十进制:0到9,无前缀。
- 八进制:0到7,代码0开头。
- 十六进制:0到9加上a到f,代码0x开头。
转进制: (系数:每一位上的数。基数:当前进制数。权:从右往左依次为012345……。)
- 任意进制转十进制:系数 * 基数的权次幂。二进制可用8421快速转换。
- 十进制转其他进制:除基取余法。不断除以基数得到余数直到商为0,再将余数倒着拼起来。
Java入门
下载和安装
-
安装JDK时路径中不要包含中文。开发工具统一安装目录。
-
进入官网下载JDK17,选择正确的操作系统版本(以Windows为例),下载x64 Installer。
-
运行exe,点击下一步,更改下载路径(例如E:\develop\jdk),随后进行安装。
JDK的安装目录
- bin:存放各种工具命令。
- conf:存放相关配置文件。
- include:存放一些平台特定的头文件。
- jmods:存放各种模块。
- legal:存放各模块的授权文档。
- lib:存放工具的补充jar包。
JDK Java开发工具包,包含JVM虚拟机(运行Java程序的地方),核心类库(Java已经写好的东西,可以直接用),开发工具(javac、java、jdb等)。JRE被包含在JDK中。
JRE Java的运行环境,包含JVM、核心类库、运行工具。
HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
- 编写程序:创建HelloWorld.java并编辑代码内容。
- 编译文件:CMD,切换盘符,进入HelloWorld.java所在目录,输入javac HelloWorld.java,成功后会生成HelloWorld.class。
- 运行程序:继续在CMD中输入java HelloWorld,成功后运行。
常见高级记事本:Editplus、Notepad++、Sublime等。以Notepad++为例,在设置里修改为ANSI编码后即可打印中文字符。
Scanner
//1.导包,找到Scanner类
import java.util.Scanner;
public class ScannerDemo1{
public static void main(String[] args){
//2.创建对象,表示准备用Scanner类
Scanner sc = new Scanner(System.in);
System.out.println("请输入整数:");
//3.接收数据,变量i记录键盘录入的数据
int i = sc.nextInt();
System.out.println(i);
}
}
注释、关键字、字面量
注释 是对代码进行解释说明的文字。不要嵌套。
①单行注释 //信息
②多行注释 /* 信息 */
③文档注释 /** 信息 */
关键字
①字母全部小写。
②在常用编辑器中有特殊颜色标记。
③class:创建/定义一个类,类是Java最基本的组成单元。
字面量
整数类型,小数类型,字符串类型(用双引号括起),字符类型(用单引号括起,内容只能有一个),布尔类型(true/false),空类型(null)。
特殊字符:\t 制表符。打印时把前面字符串的长度补齐为8的整数倍。至少补1空格,最多补8空格。
System.out.println("name"+'\t'+"age");
System.out.println("Tom"+'\t'+"23");
变量
数据类型 变量名 = 数据值;
使用方式:①输出打印。②参与计算。③修改记录的值。
新建Demo1.java内容如下:
public class Demo1{
public static void main(String[] args){
int a = 10, b = 20;
System.out.println(a + b);
}
}
变量注意事项: ①只存一个值。②变量名不重复定义。③使用前赋值。④一条语句可定义多个变量。⑤变量的作用域范围。
数据类型
基本数据类型
- 整数:byte(-128到127)、short(-32768到32767)、int(十位数)、long(十九位数,且在数据值后加L作为后缀)
- 浮点数:float(在数据值后加F作为后缀)、double
- 字符:char
- 布尔:boolean
取值范围大小关系:double>float>long>int>short>byte
标识符
给类、方法、变量等起的名字。
命名规则(硬性规定):
- 由数字、字母、下划线和美元符号$组成
- 不以数字开头
- 不是关键字
- 区分大小写
命名规范(软性建议):
①小驼峰命名法(方法、变量)
- 标识符是一个单词则全部小写
- 由多个单词组成时,除首个单词外,每个单词首字母大写
②大驼峰命名法(类名)
- 一个单词,则首字母大写
- 多个单词,则每个单词首字母大写
IDEA
下载并安装ultimate版本
项目结构介绍:project项目-module模块-package包-class类
在IDEA运行HelloWorld:
- 新建项目,命名。
- 新建Modules(位于Project Structure),选择Java模块并命名,等待Idea完成Java相关基本设置。
- 遵循命名规则,在src新建包,并在package中新建Java Class,命名为HelloWorld。
- 编写程序,右键运行。
- (新版IDEA在新建项目后会自动生成main,可以省略很多步骤。)
IDEA扩展设置:
- 自动导包:Settings-Editor-General-Auto Import-Java-勾选两项
- 提示不区分大小写(不建议修改):Settings-Editor-General-Code Completion-取消Match case勾选
- 背景图片更改:Settings-Appearance&Behavior-Appearance-Background Image...
IDEA项目和模块操作: 类:新建类,删除类,修改类名(文件名与类名保持一致)。 模块:新建模块、删除模块、修改模块、导入模块。 项目:关闭项目、新建项目、打开项目、修改项目。
运算符
运算符:对字面量或者变量进行操作的符号。
表达式:用运算符把字面量或者变量连接起来,符合java语法的式子。
算术运算符
加+,减-,乘*,除/,取余或取模%
整数除法,结果为整数
小数除法,结果为小数,但是结果不一定精确
取余的适用范围: 1.判断能否被整除。 2.判断是否为偶数。 3.斗地主发牌:三个玩家,每张牌有序号。(余数为1、2、0分别发给第1、2、3个玩家)
获取个位、十位、百位的公式如下: 个位:数值 % 10 十位:数值 / 10 % 10 百位:数值 / 100 % 10
数字相加
| 转换分类 | 注意事项 |
|---|---|
| 隐式转换(自动类型提升) | 取值范围小的数值转换为取值范围大的数值。byte short char三种类型在运算时会提升为int再运算。 |
| 强制转换 | 取值范围大的数值转换为取值范围小的数值。目标数据类型 变量名 = (目标数据类型)被强转的数据,例:byte c = (byte)(a + b); |
数字运算时,数据类型不一样不能运算,必须转成一样的。
字符串相加
在“+”操作中出现字符串时,“+”是字符串连接符,而非算术运算符。会将前后数据拼接,产生一个新的字符串。进行操作时从左到右依次执行。 例:"123"+123结果为"123123",但是1+99+"年"结果为"100年"。
字符相加
在ASCII码表中查询到字符对应的数字后执行。例:字符数字0对应48,字符A对应65,字符a对应97。 注:'字符',"字符串"。
自增自减运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| ++ | 加 | 变量的值加1 |
| -- | 减 | 变量的值减1 |
单独一行使用时,a++与++a的数值并无区别,但是在表达式中,a++意为先使用后增加,++a意为先增加再使用(--同理)。
赋值运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| = | 赋值 | int a=10,将10赋值给a |
| += | 加后赋值 | a+=b即a=a+b |
| -= | 减后赋值 | a-=b即a=a-b |
| *= | 乘后赋值 | a*=b即a=a*b |
| /= | 除后赋值 | a/=b即a=a/b |
| %= | 取余后赋值 | a%=b即a=a%b |
在赋值运算符中,隐藏着强制类型转换。例:short s;s += 1;即s = (short)(s + 1);
关系运算符(比较运算符)
| 符号 | 说明 |
|---|---|
| == | a==b,判断ab是否相等,成立true,不成立false |
| != | a!=b,判断ab是否不相等,成立true,不成立false |
| > | a>b,判断a是否大于b,成立true,不成立false |
| >= | a>=b,判断a是否大于等于b,成立true,不成立false |
| < | a<b,判断a是否小于b,成立true,不成立false |
| <= | a<=b,判断a是否小于等于b,成立true,不成立false |
结果均为boolean类型
逻辑运算符
与,&,都为真才真。 或,|,都为假才假。 非,!,取反。 异或,^,相同为F不同为T。
对于&或|,无论左边为T还是F,右边都要执行。
短路逻辑运算符
短路与,&&,结果和&相同但是有短路效果。短路或,||,结果和|相同但是有短路效果。
短路逻辑运算符具有短路效果,当左边的表达式能确定最终的结果,那么右边就不会参与运行了。这样可以提高运行效率。
//短路逻辑运算符具有短路效果
//左边表达式能确定最终结果时右边不会参与运行。
int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b < 5;
//左边能确定结果,右边不运行。若&&换为&,则b也变为11
System.out.println(result);//f
System.out.println(a);//11
System.out.println(b);//10
三元运算符
关系表达式 ? 表达式1 : 表达式2 ;
可用于求取两个数的较大值或较小值。三元运算符的结果必须被使用。
//寺庙里有三个和尚,已知他们身高150cm,210cm,165cm
//请获取他们的最高身高
int height1 = 150;
int height2 = 210;
int height3 = 165;
int temp = height1 > height2 ? height1 : height2;
int max = temp > height3 ? temp : height3;
System.out.println(max);
//ctrl + alt + l 自动对齐代码
原码反码补码
原码一个数字(0或1)占一个比特,8比特为1字节。原码最左边的数字是符号位,0正1负。一个字节的最大值是01111111,即+127。一个字节的最小值是11111111,即-127。
原码的弊端以及解决方法
利用原码进行正数计算不会有问题,但是进行负数计算就会出错。
此时可以通过引进反码解决问题。正数的反码不变。负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0。
但是由于把0分为+0和-0,所以跨0计算时会出现误差。
为了解决0的问题,引入了补码的概念。正数不变。在负数中,补码是反码加一。所以,+0的反码变成了-0的补码,-0的反码变成了-1的补码……以此类推,从而使0不再对计算产生干扰。除此以外,补码可以额外记录一个特殊值-128,该数据在1字节下没有原码和反码。
| 十进制 | 原码 | 反码 | 补码 |
|---|---|---|---|
| +0 | 0000 0000 | 0000 0000 | 0000 0000 |
| -0 | 1000 0000 | 1111 1111 | 0000 0000 |
| -1 | 1000 0001 | 1111 1110 | 1111 1111 |
| -2 | 1000 0010 | 1111 1101 | 1111 1110 |
| -3 | 1000 0011 | 1111 1100 | 1111 1101 |
| -127 | 1111 1111 | 1000 0000 | 1000 0001 |
| -128 | 无 | 无 | 1000 0000 |
计算机中的存储和计算都是以补码的形式进行的。
补充说明
| 运算符 | 含义 | 运算规则 |
|---|---|---|
| << | 左移 | 向左移动,低位补0 |
| >> | 右移 | 向右移动,依据原本的正负在高位补1或0,0正1负 |
| >>> | 无符号右移 | 向右移动,高位补0 |
| 类型 | 字节 | 10的原码 |
|---|---|---|
| byte | 1 | 0000 1010 |
| short | 2 | 0000 0000 0000 1010 |
| int | 4 | 0000 0000 0000 0000 0000 0000 0000 1010 |
| long | 8 | 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1010 |