Java学习笔记1

129 阅读11分钟

基本知识

人机交互

图形化界面:操作电脑消耗内存,运行速度慢。

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字节下没有原码和反码。

十进制原码反码补码
+00000 00000000 00000000 0000
-01000 00001111 11110000 0000
-11000 00011111 11101111 1111
-21000 00101111 11011111 1110
-31000 00111111 11001111 1101
-1271111 11111000 00001000 0001
-1281000 0000

计算机中的存储和计算都是以补码的形式进行的。

补充说明

运算符含义运算规则
<<左移向左移动,低位补0
>>右移向右移动,依据原本的正负在高位补1或0,0正1负
>>>无符号右移向右移动,高位补0
类型字节10的原码
byte10000 1010
short20000 0000 0000 1010
int40000 0000 0000 0000 0000 0000 0000 1010
long80000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1010