一、计算机基础
1. 打开 CMD 的方式
- 开始 > Windows 系统 > 命令提示符。
- Win + R 输入 CMD 打开控制台 (推荐使用)。
- 在任意文件夹下,按住 Shift 键 + 鼠标右键 打开命令行窗口。
- 在资源管理器的地址栏前加上 CMD 路径。
2.管理员身份运行方式
- 选择以管理员方式运行。
3.常见的Dos命令
-
盘符切换:英文(盘符 + 冒号)
Microsoft Windows [版本 10.0.19043.1348] (c) Microsoft Corporation。保留所有权利。 C:\Users\xinzh>d: D:\>
-
查看当前盘符下的全部目录:dir
D:\>dir 驱动器 D 中的卷是 工作台 卷的序列号是 1718-20F6 D:\ 的目录 2021/05/17 16:15
BaiduNetdiskDownload 2021/05/15 19:50 CloudMusic 2021/05/14 21:19 Dev-Cpp 2021/05/14 16:56 DTL8Folder 2021/05/14 22:35 HBuilderX 2021/05/14 22:36 java 2021/05/14 17:00 MyDrivers 2021/05/14 22:47 Notepad++ 2021/05/14 22:29 Sublime Text 3 2021/05/14 18:56 Typora 2021/05/17 17:53 VCW 2021/05/14 21:25 VS2017 2021/05/14 21:47 Windows Kits 0 个文件 0 字节 13 个目录 663,783,088,128 可用字节 -
切换目录:cd change directory
E:\>cd /d d: d:\>cd /d d:\leven // '/d'可实现进入跨盘符目录切换 d:\LEVEN>cd .. d:\>
返回上一级:cd ..
清理屏幕: cls
退出终端:exit
查看电脑IP信息:ipconfig
打开计算器:calc
打开画图:mspaint
打开记事本:notepad
ping 命令:ping 网址
-
文件操作
C:\Users\xinzh\Desktop>md test C:\Users\xinzh\Desktop>cd test C:\Users\xinzh\Desktop\test>cd>a.txt C:\Users\xinzh\Desktop\test>
-
删除文件
C:\Users\xinzh\Desktop\test>del a.txt C:\Users\xinzh\Desktop\test>cd .. C:\Users\xinzh\Desktop>rd test C:\Users\xinzh\Desktop>
二、Java 基础
1. 简介及安装、配置
- 点击查看
2. 编写第一个 Java 程序
-
新建 Hello.java 文件,内容如下:
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello,world!"); // 输出 Hello,wrold! } }
编译 java 文件:在命令行窗口输入
javac HelloWorld.java
,回车键编译代码,生成 HelloWorld.class 文件
- 运行 class 文件:输入
java HelloWorld
,回车键运行程序
可能遇到错误的情况
- 单词大小写,Java 区分大小写
- 尽量使用英文
- 文件名与类名必须保持一致,且首字母要大写
- 符号中不能出现中文
3. Java 三种注释方式
-
单行注释
//
, idea 快捷键Ctrl + /
idea 常用快捷键public class HelloWorld { public static void main(String[] args) { // 单行注释,输出 Hello,wrold! System.out.println("Hello,world!"); } }
-
多行注释
/* */
, idea 快捷键Ctrl + Shift + /
public class HelloWorld { public static void main(String[] args) { /* 多行注释 */ System.out.println("Hello,world!"); } }
文档注释:JavaDoc
/** */
/**
* @Description HelloWorld
* @Author LIU
*/
public class HelloWorld {
public static void main(String[] args) {
// 单行注释,输出 Hello,wrold!
System.out.println("Hello,world!");
}
}
4. 标识符与关键字
- 标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。- 所有的标识符都应该以字母
A-Z
或者a-z
,美元符$
,或者下划线_
开始; - 首字符之后可以是字母
A-Z
或者a-z
美元符$
、下划线_
或数字的任何字符组合; - 不能使用关键字作为变量名或方法名;
- 标识符是大小写敏感的;
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音。
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
- 所有的标识符都应该以字母
/**
* @author Liu
* @create 2021-11-26 11:38
*/
public class Demo01 {
public static void main(String[] args) {
String Ahello = "Liu";
String hello = "Liu";
String $hello = "Liu";
String _hello = "Liu";
String _vvhh = "Liu";
String 变量 = "Liu"; // 不建议这样去使用
}
}
- Java 关键字 点击查看
5. 数据类型
- 语言类型分类
- 强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
- 弱类型语言
- Java 数据类型基本分类:基本类型和引用类型
- 基本类型(八种)
- 数值类型
- 整数类型
- byte (位) 占1字节,范围:
-128
-127
- short (短整数) 占2字节,范围:
-2^15
-2^15-1
- int (整数) 占4字节,范围:
-2^31
-2^31 - 1
- long (长整数) 占8字节,范围:
-2^63
-2^63-1
- byte (位) 占1字节,范围:
- 浮点类型
- float (单精度) 占4字节
- double (双精度) 占8字节
- 整数类型
- 字符类型:char (字符) 占2字节
- boolean 类型 (布尔值):占1位其值只有 true 和 false 两个。
- 数值类型
- 引用类型 (三种)
- 类
- 接口
- 数组
public class Demo02 {
public static void main(String[] args) {
// 八大基本数据类型
// 整数
int num1 = 10; // 最常用
byte num2 = 20;
short num3 = 30;
long num4 = 40L; // Long 类型要在数字后面加 L
// 小数:浮点数
float num5 = 50.1F; // float 类型要在数字后面加 F
double num6 = 3.1415926534546246455;
// 字符类型
char name = '中';
// 字符串,String 不是关键字,是类
String names = "Liu";
// 布尔值
boolean flag = true;
boolean flag2 = false;
}
}
- 什么是字节
- 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写 B 来表示,1B(byte 字节)= 8bit(位)。
- 字符:是指计算机中使用的字母、数字、字和符号。
- 1bit表示1位
- 1Byte表示一个字节1B = 8b
- 1024B = 1KB
- 1024KB = 1M
- 1024M = 1G
数据类型扩展知识
public class Demo03 {
public static void main(String[] args) {
// 整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i=10;
int i2 = 010; // 八进制0
int i3 = 0x10; // 十六进制0x
System.out.println(i); // 10
System.out.println(i2); // 8
System.out.println(i3); // 16
System.out.println("-------------------------------------");
//************************************************
// 浮点数拓展
// BigDecimal 数学工具类
// float 有限 离散 舍入误差 大约 接近但不等于
// 最好完全避免使用浮点数进行比较
float f = 0.1f; // 0.1
double d = 1.0/10; // 0.1
System.out.println(f==d); // false
float d1 = 2425444564215654564f;
float d2 = d1 + 1;
System.out.println(d1==d2); // true
System.out.println("-------------------------------------");
//************************************************
// 字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); // 强制转换
System.out.println(c2);
System.out.println((int)c2); // 强制转换
// 所有字符的本质还是数字
// 编码 Unicode 2字节 0 - 65536 Excel
char c3 = '\u0061';
System.out.println(c3); // a
// 转义字符
// \t 制表符
// \n 换行
// ......
System.out.println("hello\tworld!");
System.out.println("hello\nworld!");
System.out.println("-------------------------------------");
//
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb); // false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd); // true
// 布尔值扩展
boolean flag = true;
if(flag==true){} // 新手
if(flag){} // 老油条
// 代码要精简易读
}
}
- 转义字符 点击查看
- Unicode 编码 点击查看
6. 类型转换
-
由于 Java 是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
低 ------------------------------------------------> 高 byte -> short -> char -> int -> long -> float -> double
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
public class Demo04 { public static void main(String[] args) { int i = 128; byte b = (byte)i; // 内存溢出 double b1 = i; // 强制转换 (类型)变量名 高--低 // 自动转换 低--高 System.out.println(i); System.out.println(b); System.out.println(b1); /* 注意点: 1.不能对布尔类型转换 2.不能将对象类型转换为不相干的类型 3.在把高容量转换到低容量时,强制转换 4.转换的时候可能存在内存溢出,或者精度问题! */ System.out.println("++++++++++++++++++++++++++++++++++++"); System.out.println((int)123.7); System.out.println((int)-45.89f); System.out.println("======================="); char a = 'a'; int c = a+1; System.out.println(c); // 98 System.out.println((char)c); // b } }
常见问题
public class Demo05 {
public static void main(String[] args) {
// 操作比较大时,注意溢出
// JDK7特性,数字之间可以用下划线分割
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
int total = money*years; // -1474836480 计算时溢出
System.out.println(total);
long total2 = money*years;
System.out.println(total2); // 默认是int,转换之前已经存在问题了!!!
long total3 = money*(long)years;
System.out.println(total3); // 20000000000
}
}
7. 变量与常量
- 变量:可以变化的量。
- Java 是一种强类型语言,每个变量都必须声明其类型。
- Java 变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
public class Demo06 { static int allClicks = 0; // 类变量 String str = "hello world"; // 实例变量 public void method(){ int i = 0; // 局部变量 } public static void main(String[] args) { // int a,b,c; // int a=1,b=2,c=3; String name = "Liu"; char x = 'X'; double pi = 3.14; } }
public class Demo07 { // 类变量 static static double salary = 2500; // 属性:变量 // 实例变量:从属于对象:实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0 // 布尔值:默认是 faLse // 除了基本类型,其余的都是null String name; int age; // main 方法 public static void main(String[] args) { // 局部变量:必须声明和初始化值 int i = 10; System.out.println(i); // 变量类型 变量名字 = new Demo08(); Demo07 demo07 = new Demo07(); System.out.println(demo07.age); System.out.println(demo07.name); // 类变量 static System.out.println(salary); } // 其他方法 public void add(int i){ System.out.println(i); } }
- 常量( Constant):初始化( initialize)后不能再改变值!不会变动的值;
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
- 常量名一般使用大写字符。
public class Demo08 { // 修饰符,不存在先后顺序 static final double PI = 3.14; public static void main(String[] args) { System.out.println(PI); } }
- 变量的命名规范
- 所有变量、方法、类名:见名知意;
- 类成员变量:首字母小写和驼峰原则:monthSalary;
- 局部变量:首字母小写和驼峰原则;
- 常量:大写字母和下划线:MAX_VALUE;
- 类名:首字母大写和驼峰原则:Man, GoodMan;
- 方法名:首字母小写和驼峰原则:run(),runRun()。
8. 基本运算符
Java 语言支持如下运算符:
- 算术运算符:+,-,*,/,%,++,--
- 赋值运算符: =
- 关系运算符:>,≤,>=,<=,==,!=, instanceof
- 逻辑运算符:&&,‖,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
- 条件运算符: ?:
- 扩展赋值运算符:+=,-=,*=,/=
查看更多
package github.demo01;
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a/(double)b);
}
}
package github.demo01;
public class Demo02 {
public static void main(String[] args) {
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);
System.out.println(b+c+d);
System.out.println(c+d);
}
}
package github.demo01;
public class Demo03 {
public static void main(String[] args) {
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);
System.out.println(b+c+d);
System.out.println(c+d);
System.out.println((double)c+d);
}
}
package github.demo01;
public class Demo04 {
public static void main(String[] args) {
// 关系运算符返回的结果
int a = 10;
int b = 20;
int c = 21;
System.out.println(c%a); // c / a 的余数
System.out.println(a>b);
System.out.println(a
9. 自增自减运算符、初识 Math 类
package github.demo01;
public class Demo05 {
public static void main(String[] args) {
// ++ -- 自增,自减 一元运算符
int a = 3;
int b = a++; // 执行完这一行代码后,先给b赋值,再自增
System.out.println(a);
int c = ++a; // 执行完这一行代码前,先自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 幂运算 2^3
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
10. 逻辑运算符、位运算符
package github.demo01;
public class Demo06 {
// 逻辑运算符
public static void main(String[] args) {
// 与(and)一假则假 或(or)一真则真 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:" + (a && b)); // 逻辑与:两个变量都为真,结果才为true
System.out.println("a || b:" + (a || b)); // 逻辑或:两个变量有一个为真,则结果才为true
System.out.println("!(a && b):" + !(a && b)); // 取反:如果是真,则变为假;如果是假,则变为真
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}
package github.demo01;
public class Demo07 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
----------------------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
2*8 = 16
<< 左移一位等同于 *2
>> 右移一位等同于 /2
*/
System.out.println(2<<3);
}
}
11. 三元运算符
package github.demo01;
public class Demo08 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; // a = a+b
a -= b; // a = a-b
System.out.println(a);
// 字符串连接 + String
System.out.println(""+a+b); // 1020 直接转换为字符串
System.out.println(a+b+""); // 30 先计算 a+b 再转成字符串
}
}
package github.demo01;
public class Demo08 {
public static void main(String[] args) {
// 三元运算符
// x ? y : z
// 如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
}
}
12. 包机制
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
-
包语句的语法格式为:
package pkg1[.pkg2[.pkg3……]];
一般利用公司域名倒置作为包名;如:
com.xxx.www
-
为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用
”import”
语句可完成此功能。import package1[.package2……].(classname | *); // * 表示导入包下所有的类
13. JavaDoc
-
javadoc
命令是用来生成自己 API 文档的。 - 参数信息
- @ author 作者名
- @ version 版本号
- @ since 指明需要最早使用的 jdk 版本
- @ param 参数名
- @ return 返回值情况
- @ throws 异常抛出情况
package github.demo01;
public class Doc {
String name;
/**
* @author
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
javadoc -encoding UTF-8 -charset UTF-8 Doc.java // 命令行生成 java 文档