目录
JAVA
JAVA语言:半解释半编译
JAVA的三个版本:
JAVASE:做桌面应用程序。java基础
JAVAEE:企业级应用
JAVAME:手机端,淘汰
解释:语言,JS浏览器直接可以运行JS,不需要翻译
编译:JAVA、Scala、hello.java是以十进制为单位写的文件,计算机只认二进制。
Java用C和c++写出来的。
JAVA特点:
①面向对象(C)
②跨平台:平台是操作系统。用JAVA写的软件可以在任意操作系统上运行
③简单性(和C比)
④解释执行:计算机执行的是.class,解释执行.class
⑤多线程:多个任务同时进行
⑥分布式
⑦健壮性:强数据类型的语言、异常处理、垃圾回收机制
⑧安全性:插件设置一个安全防范机制
计算机
软件:看不见摸不着。操作系统:windows、linux、MacOS
硬件:看得见摸得着。
内存:物理内存、虚拟内存
操作系统基本命令:
(1)打开指令控制台:win+r
(2)输入盘符:切换到某个盘下 D: C:
(3)删除:dal a.txt(不走回收站)
(4)进入单级目录:cd a
(5)进入多级目录:cd D:\a\java\day1
(6)创建一个空文件:copy nul a.txt
(7)向文件里写入内容:echo 内容
(8)复制文件:copy a.txt b.txt
(9)查看当前路径下的文件信息:dir
(10)回退到上一级目录:cd..
(11)回退到盘符根目录:cd\
(12)清屏:cls
计算机的一些设置
①显示后缀名
②文件的浏览方式(建议使用 详细信息)
③建议不要用第三方杀毒软件,尤其是(某60)
二进制
字节是计算机中数据最小的单位。
存储单位:
1Byte = 8 bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024 GB
二进制的加减法计算
十进制:逢十进一 十进制世界的最大数是9
二进制:逢二进一 二进制世界的最大数是1
JAVA环境搭建
安装JAVA
自己配置环境变量
①JAVA_HOME:告诉系统JDK安装在了哪个位置。
JAVA_HOME:C:\soft\java\jdk-17.0.3.1
②Path:告诉系统JDK提供的javac(编译),Java(执行)命令安装到了哪个位置。
法一:Path:C:\soft\java\jdk-17.0.3.1\bin
法二(推荐使用):%JAVA_HOME%\bin (%:引用)
安装完毕之后可以win+r输入cmd,再次输入常用的指令确认是否安装成功:Java,javac,javap,java -version,java -jar
java入门程序-HelloWorld
开发JAVA程序,需要三个步骤:编写代码,编译代码,运行代码
注意事项:
✔ 第一个JAVA程序建议使用记事本书写。
✔ 建议代码文件名全英文,首字母大写,满足驼峰式,源代码文件后缀必须是.java
✔ 随时保存 ctrl+s
在D盘创建一个文件夹起名为:code,在code下面创建一个记事本文档,重命名为:HelloWorld 后缀为 java。
public class HelloWorld {// 类名(要与文件的名称一样):HelloWorld
public static void main(String[] args) { //main方法 固定写法,是一个程序运行的入口
System.out.println("helloworld"); //输出语句,代表打印一个内容(HelloWorld)出来
}
}
编译代码、运行代码
① 编译:javac 文件名.java
范例:javac HelloWorld.java
② 运行:java 类名
范例:java HelloWorld
运行win+r,输入cmd,先切到D盘,输入cd code,输入javac HelloWorld.java,回车,输入java
HelloWorld,再回车。可以运行。
总结:通过Javac hello.java把他编译成了.class,系统去解释执行了这个hello.class
在我们去配置环境变量时,实际上相当于在系统上搭建了一台虚拟机
标识符
由一些字符、符号组合起来的名称,用于给类,方法,变量等起名字的规矩。
标识符的要求
基本要求: 只能由字母,数字,下划线(_),美元符号组成。
强制要求:数字不能开头,不能是关键字,要区分大小写。
命名指导规范
变量名称:满足标识符规则,推荐使用全英文、有意义、首字母小写,满足“驼峰模式”,例如:int studyNumber = 59。不建议使用$号,下划线尽量不要开头。
类名称:满足标识符规则,推荐使用全英文、有意义、首字母大写,满足“驼峰模式”,例如:HelloWorld.java。
什么是类?
是JAVA开发中的一个最小的单位,一个JAVA开发的项目是由一堆类组成的class
注释
对代码进行解释说明的文字
单行注释(CTRL+/)://
多行注释(CTRL+shift+/):/*.................*/
文档注释:/**.................*/ (写类上面)
三种注释都有调试代码
关键字
官方的解释:这个字有独一无二的作用。
关键字都是小写!!!
不能用来命名!!!否则报错!!!
JAVA有特殊的关键字:public、class、byte、short、int、long、double、abstract(声明抽象)......共53个,有两个保留字:goto、const
数据类型
约束变量存储数据的形式。
数据类型 变量名称 = 初始值;
数据类型分类
引用数据类型( 除了基本数据类型之外的,如String)
基本数据类型(4大类8种)
基本数据类型(4大类 8种)
数据类型 | 关键字 | 取值范围 | 字节数 |
整数 | byte | -128~127 | 1 |
short | -32768~32767 | 2 | |
Int(默认) | -2147483648~2147483647 | 4 | |
long | -2 63~236-1 | 8 | |
浮点数(小数) | float | 1.401298e-45 ~3.402823e+38 | 4 |
Double(默认) | 4.9000000e-324~1.797693e+308 | 8 | |
字符 | char | 0~65535 | 2 |
布尔 | Boolean | True,false | 1 |
基本数据类型举例
public class Demo {
public static void main(String[] args) {
//掌握使用基本数据类型定义不同的变量
//1.byte 字节型 占1个字节 -128 - 127
byte num = 128;//报错
//2.short 短整型 占2个字节
short money = 30000;
//3.int 整型 默认的类型 占4个字节(默认使用的类型)
int it = 232323223;
//4.long 长整型 占8个字节
long lg = 2323232323;
//注意:随便写一个整数字面量默认是int类型,2323232323516516虽然没有超过long的范围,但是超过了本身int类型的表示范围
//如果希望随便写一个整数字面量当成long类型,需要在其后加上 l或者L (建议使用L,l像1)
long lg2 = 2323232323516516;//报错
long lg2 = 2323232323516516L;
//5.浮点型(小数)
//float单精度 占四个字节
//注意:随便写一个小数字面量默认是double类型,如果希望写一个小数字面量是float类型的需要在其后面加上f或F
float score = 98.5F;
//6.double 双精度 占8个字节
double score2 = 999.99;
//7.字符类型 char
char ch = 'a';
char ch1 ='中国' //报错
//8.布尔类型 boolean
boolean rs = true;
boolean rs2 = false;
System.out.println("");
}
}
变量
用来存储一个数据的内存区域(可以理解成盒子),且里面的数据可以变化。
变量定义的格式
①数据类型 ②变量名称 = ③初始值
①:强制限制盒子中存储数据的形式。例如:int double
②: 取名称。
③:存储的初始数据
变量的值通过=赋值,把等号右边的值通过等号赋值给等号左边的变量。
定义变量出现的问题:
Ⅰ.某个变量存储了其他类型的数据:double money = "有钱";
Ⅱ.一个范围内不能定义2个同名变量:int age =23; int age =21;
Ⅲ.定义的时候可以没有初始值,使用的时候必须给初始值:int age =23; System.out.println("age");
类型转换
精度:
整型:4种整数类型,精度是和位数挂钩,位数越大,精度越高
自动类型转换
范围类型小的变量,可以直接赋值给范围类型大的变量
public class Demo1{
public static void main(String[] args) {
//目标:理解自动类型转换
byte a = 20;
int b = a;// 发生了自动类型转换
System.out.println("a");
System.out.println("b");//20
}
}
自动类型转换的其他形式
表达式的最终结果由最高类型决定。
在表达式中,byte,short,char是直接转换成int类型参与运算的。
强制类型转换
场景
int a = 功能1();
功能2(byte b);
int a = 20;
byte b = a;
问题
范围类型大的变量或者数据,不可以直接赋值给范围类型小的变量
强制类型转换
数据类型 变量2 = (数据类型)变量1、数据
int a = 20;
byte b = (byte)a;
注意事项
强制类型转换可能造成数据(丢失)溢出;
浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。
运算符
对字面量或者变量进行操作的符号。
基本的算术运算符
public class Demo3 {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println(a*1.0 / b); //3.3333
System.out.println(3 / 2); // 1
System.out.println(3 * 1.0 / 2); //1.5
System.out.println(3 / 2 *1.0); //1.0
System.out.println(a * b); // 1
}
}
注意
如果两个整数做除法,得到的一定是整数,因为最高类型是整数。
整数和整数做运算,得到的一定是整数。
加符号做连接符
"+"符号与字符串运算的时候是做连接符的,其结果依然是一个字符串
public class Demo4 {
public static void main(String[] args) {
int a = 10;
System.out.println("abc" + 'a'); //abca
System.out.println("abc" + a); //abc10
System.out.println(10 + a); //10
System.out.println("abc" + 10 + 'a'); //abc10a
System.out.println(15 + "abc" + 15); //15abc15
System.out.println(a + 'a'); //102
System.out.println(a + "" +'a'); //5a
System.out.println(a + 'a' + "yxy"); //102 yxy
System.out.println("yxy" + a + 'a'); //yxy10a
System.out.println("yxy" + (a + 'a')); //yxy102
总结
Ⅰ.与字符串+运算时会被当成连接符,其结果还是字符串。
Ⅱ.能算则算,不能算就在一起。
自增、自减
符号 | 作用 | 说明 |
++ | 自增 | 变量自身的值加1 |
-- | 自减 | 变量自身的值减1 |
注意:
Ⅰ.++和 --既可以放在变量的后面,也可以放在变量的前面。
Ⅱ.++ 、 -- 只能操作变量,不能操作字面量的。
public class Demo5 {
public static void main(String[] args) {
int a = 10;
//a++; // a = a + 1
++a; // a = a + 1 // 11
System.out.println(a);
int b = 10;
//b--; //b = b - 1
--b; // 9
System.out.println(b);
}
}
自增自减的使用注意事项
++ 、 --如果不是单独使用(如在表达式中、或者同时有其他操作),放在变量前后会存在明显区别。
①放在变量前面,先对变量进行+1 、 -1,再拿变量的值进行运算。
int a = 10;
int rs = ++a;
②放在变量后面,先拿变量的值进行运算,再对变量进行+1 、 -1
int b= 10;
int rs = b++;
public class Demo6 {
public static void main(String[] args) {
//++ -- 在变量前面,先+1 -1 再使用
int i = 10;
int j = ++i;
System.out.println(i); //11
System.out.println(j); //11
//++ -- 在变量后面,先使用 再+1 -1
int m = 10;
int n =m++;
System.out.println(m); //11
System.out.println(n); //10
}
}
赋值运算符
就是"="。
int a = 10;//先看"="右边,把数据10赋值给左边的变量a存储。
扩展赋值运算符
注意:扩展的赋值运算符隐含了强制类型转换。
public class Demo7 {
public static void main(String[] args) {
// 赋值运算符
int a = 10;
int b = 200;
//a += b;
a += b;//a = (int)(a + b)
System.out.println(a);
byte i = 10;
byte j = 20;
//i = (byte)(i + j);
i += j;//i = (byte)(i + j);
System.out.println(i);
int m = 10;
int n = 5;
//m += n;
//m *= n;//等价于: (int)(m * n)
System.out.println(m);
}
}
赋值运算符作用?
①基本作用是赋值。
②+=还可以实现数据的累加,把别人的数据加给自己。
关系运算符
对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)。
注意:在做相等判断时,千万不要把 == 误写成 =
public class Demo8 {
public static void main(String[] args) {
// 比较运算符,结果都是boolean类型
// > < >= <= == !=
// 没有三等
int a = 10;
int b = 20;
double c = 10.0;
System.out.println(a == c);//true
}
}
逻辑运算符
可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果。
符号 | 介绍 | 说明 |
& | 逻辑与 | 必须都是true,结果才是true;只要有一个是false,结果是false |
| | 逻辑或 | 有一个为true,结果是true |
! | 逻辑非 | 你真我假,你假我真。!true = false 、!false = true |
^ | 逻辑异或 | 如果两个条件都是false或者都是true,则结果是false。两个条件不同结果是true |
public class Demo9 {
public static void main(String[] args) {
// 逻辑运算符 与 或 非 异或
int a = 10;
int b = 20;
System.out.println(a < 5 & b > 6);//false
System.out.println(a < 5 ^ b < 6);//true
}
}
短路逻辑运算符
符号 | 介绍 | 说明 |
&& | 短路与 | 判断结果与"&"一样。过程是左边为false,右边则不执行 |
|| | 短路或 | 判断结果与"|"一样。过程是左边为true,右边则不执行 |
注意:逻辑与"&"、逻辑或"|":无论左边是false还是true,右边都要执行。
public class Demo10 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//System.out.println(a > 100 && ++b > 10);
System.out.println(a > 100 & ++b > 10);//false
System.out.println(b); //21
}
}
总结:
逻辑与& :有一个为false,结果是false
短路与&&:一个为false,结果是false。前一个为false,后一个条件不执行
逻辑或|:有一个为true,结果是true
短路与||:一个为true,结果是true。前一个为true,后一个条件不执行
逻辑非!:!True=false !false=true
逻辑异或^:相同是false,不同是true(两男在一起假 两女在一起假 5. 一男一女真)
三元运算符
格式:条件表达式?值1:值2;
执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果值为false,返回值2
public class HelloWorld {
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a>b?a:b);//20
}
}
总结:今天学习了JAVA基础,包括变量、注释、关键字、数据类型以及运算符。
掌握程度:⭐⭐⭐⭐