1、Java简单描述
1.1Java语言背景
计算机语言:人与计算机之间信息交流的一种特殊语言
Java语言:美国Sun公司在1995年推出的计算机语言
2009年,Sun公司被甲骨文公司收购,oracle官网即可https://www.oracle.com
java语言的三个版本:
JavaSE: (标准版),用于桌面应用的开发,是其他两个版本的基础
JavaME: (小型版),嵌入式电子设备的使用
JavaEE: (企业版),Web网站开发的使用
1.2 Java的跨平台性
Java程序(*.java)并不是通过是直接运行的,Java编译器将Java源程序(*.java)编译成字节码文件(*.class文件),然后由Java的虚拟机(JVM)对字节码文件运行。
导致的在不同的操作系统下也可以使用同一个Java源文件。
在不同的操作系统下,只需安装与系统相对应的Java虚拟机即可实现java程序的跨平台运行。
1.3 JRE、JDK
JVM,Java虚拟机
JRE,Java运行环境,包含了JVM和Java的核心类库(Java API)
JDK,称为Java开发工具,包含了JRE和开发工具
总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
1.4 JDK的下载与安装
1.4.1 下载
JDK官网:http://www.oracle.com
注意:不同的操作系统,下载对应版本的JDK。
1.4.2 安装
简易安装,下一步即可。
默认安装路径在C:\Program Files下,为了日后的便捷使用,建议将Java的安装文件保存在一次,便于查找。
注意:安装路径使用纯英文目录(源程序代码对于实现汉字目录可能有部分偏差)。
1.4.3 JDK的安装目录
目录名称 | 说明 |
---|---|
bin | 存放JDK的各种工具命令。javac(编译)和java(运行)就放在这个目录 |
conf | 存放JDK的配置文件 |
include | 存放一些特定的头文件 |
jmods | 存放JDK的各种模块 |
legal | 存放JDK各模块的文档 |
lib | 存放JDK工具的一些补充JAR包 |
2.第一个Java源程序演示
2.1使用DOS窗口命令操作
1.打开cmd命令行窗口。(win+R,cmd);
2.cmd的操作指令
操作 | 说明 |
---|---|
盘符名称: | 盘符切换。E:回车,表示切换到E盘。 |
dir | 查看当前路径下的内容。 |
cd 目录 | 进入单级目录。 |
cd .. | 回退到上一级目录。 |
cd \ | 回退到盘符目录。 |
cls | 清屏。 |
exit | 退出命令提示符窗口。 |
2.3HelloWord
2.3.1Java源程序的运行流程示意
首先,编写准确无误的Java程序。
其次,通过javac进行编译程序。
最后,通过java直接运行字节码文件。
2.3.2代码编写
创建记事本编写下面代码,然后将文件名改为HelloWord.java。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
2.3.3编译与运行
使用cmd命令窗口,将其目录切换到HelloWord.java文件所在的目录,输入"javac Hello Word.java",会在该目录下得到一个字节码文件"HelloWord.class",然后再cmd命令窗口输入“java HelloWord”,则可以运行class文件,得到运行结果。
2.4代码解析
public class HelloWord:固定格式,class为定义一个类,HelloWord为类名,而且要与文件前缀同名。
main:为主方法
System.out.println("HelloWord"):输出格式,会返回到命令窗口。
3.基础语法
3.1注释
注释可以用来对代码进行解释和说明,提高代码的可读性。
单行注释://这是注释
多行注释:/*
多行注释
多行注释
*/
文档注释:/**
文档注释
*/
3.2关键字
关键字表示再Java中已经被赋予特定意义的单词
关键词的特点:全部小写
3.3常量
常量:在java代码的运行过程中,常量的值无法发生改变。
在Java中常量发分类:
字符串常量 用双引号括起来的多个字符(可以包含0个、一个或多个),例如"a"、"abc"、"中国"等
整数常量 整数,例如:-123、0、1234等
小数常量 小数,例如:-23.45、1.25、567.89等
字符常量 用单引号括起来的一个字符,例如:'A'、'a'、'1'、'大'等
布尔常量 布尔值,表示真假,只有两个值true and false
空常量 一个特殊的值,空值,值为null
除空常量外,其他常量均可使用输出语句直接输出。
3.4数据类型
3.4.1存储单元
计算机存储设备的最小单元叫做"位(bit)",又称为"比特位"。
计算机中最基本的存储单元叫做“字节(byte)”;
1B(字节) = 8bit 1KB = 1024B 1MB = 1024KB
1GB = 1024MB 1TB = 1024GB
3.4.2Java自带的数据类型
Java中数据类型包括,基本数据类型和引用数据类型
基本数据类型:
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数类型 | byte | 1 | -128~127 |
short | 2 | -32768~32767 | |
int(默认) | 4 | -2的31次方到2的31次方-1 | |
long | 8 | -2的63次方到2的63次方-1 | |
浮点类型 | float | 4 | 负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到3.402823E+38 |
double(默认) | 8 | 负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308 | |
字符类型 | char | 2 | 0-65535 |
布尔类型 | boolean | 1 | true,false |
应用数据类型在后期会介绍到,如String, Integer,等等。
3.5变量
定义变量:数据类型 变量名=数据值;
在代码程序的运行过程中,变量的值,可以随时发生改变,前提是变量存在。
(变量的作用域 : 只在它所在的大括号中有效)
输出变量:System.out.println(变量名);
注意:尽量不要一行代码创建和赋值多个变量,会大大降低可读性。
修改变量的值:变量名=新值;
3.6定义变量容易出现的错误
1.变量名必须独一使用,不可重复。
2.在引用变量时,必须先进行变量的初始化。
3.在long类型,赋值时,在数字末尾加L;在float类型,赋值时,在数字末尾加F。
3.7简单的键盘录入数据
使用java自带的Scanner包,可以用来获取键盘的输入值。
创建Scanner对象:Scanner scanner = new Scanner(System.in);
获取键盘录入:int x = scanner.nextInt(); String y = scanner.nextLine();
3.8标识符
标识符用于类名,变量名,方法名,常量名等命名。
标识符的规则:
由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。
不能使用java中的关键字作为标识符。 标识符对大小写敏感(区分大小写)。
标识符的命名规定:
小驼峰式命名:变量名、方法名;首字母小写,从第二个单词开始每个单词的首字母大写。
大驼峰式命名:类名;每个单词的首字母都大写。
4.类型转换
不同的数据类型时间是可以相互转换的。可以分为自动类型转换和强制类型转换。
4.1隐式转换(小转大)
数据类型中占用字节数少的转为占用字节数多的,可以直接隐式转换。
从小到大:byte->short->int->long->float->double;
char->int->long->float->double;
整数的默认类型为int类型,浮点数的默认类型为float类型。
注意:byte,shourt,char在进行运算时,均会转换为int类型,进行计算,最后结果也为int。
4.2强制转换(大转小)
强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
如果有原数据有小数,则在转换后,小数直接省略。
4.3类型转换注意
在强制转换的过程中,原数据大于新数据类型的最大取值,则会从新数据的最小值网上加,造成数据的错误。
5.运算符
5.1算术运算符
运算符的功能:对程序中常量和变量进行固定操作的符号
表达式:用运算符将常量和变量连接起来并且没有语法错误的语句
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 1+1=2 |
- | 减 | 2-1=1 |
* | 乘 | 2*3=6 |
/ | 除 | 7/3=2 |
% | 取余 | 7%3=1 |
注意:
1.在进行算术运算的时候,如果运算符两侧都都是整数型,那么其结果就是整数型。如果有任何一方为小数型,则结果为小数型。
2.char类型的进行“+”运算,进行ASCII码运算,如A+1,其结果为:66
3.String类型的进行“+”运算,进行字符串拼接,其结果为新的字符串,如123+“ABC”,结果为:123ABC
4.若String类型的进行“+“运算,出现多个相邻的数字相加,则从左到右按照顺序,依次相加,如,1+2+”ABC“+3+5+6,结果为:3ABC356
5.2自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
-- | 自减 | 变量的值减1 |
注意:
1.自增自减运算符既可以放到变量的前面,也可以放到变量的后面。
2.++在前面:则先加1,再引用。++在后面:先引用,再加1。减法以此类推。
5.3赋值运算符
该运算符是将变量经过运算符与后面的常量或者变量进行运算,最后将值赋值给变量。
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=100,将100赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a×b的值给a |
/= | 除后赋值 | a/=b,将a÷b的商给a |
%= | 取余后赋值 | a%=b,将a÷b的余数给a |
注意:赋值运算符其中包含了强制类型转换。
5.4关系运算符
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。
关系运算符的结果为:true或false
如果表达式成立则结果为true,如果表达式不成立则结果为false
5.5逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
注意:逻辑与、逻辑或、逻辑异或、逻辑非的运算过程中,会将运算符两侧的结果都得出来,最后进行比较。
5.6短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 作用和&相同,但是有短路效果 |
|| | 短路或 | 作用和|相同,但是有短路效果 |
在短路逻辑运算符中,如果&&的左侧为false,那就不执行右侧,直接返回最后结果false;如果||的左侧为true,那就不执行右侧,直接返回最后结果true。
5.7三元运算符
三元运算符表达式:关系表达式?表达式1:表达式2;
如果关系表达式结果为true,那执行表达式1;如果关系表达式结果为false,那执行表达式2。
6.流程控制
6.1流程控制的分类
1.顺序结构
2.选择结构
3.循环结构
6.2顺序结构
按照代码的先后顺序,依次执行
6.3选择结构
6.3.1if语句
格式:
if (关系表达式) {
语句体;
}
注意:如果关系表达式结果为true,则执行语句体;如果关系表达式结果为false,直接跳过语句体
格式:
if (关系表达式) {
语句体1;
} else {
语句体2;
}
注意:如果关系表达式结果为true,则执行语句体1;如果关系表达式结果为false,则执行语句体2
格式:
if (关系表达式1) {
语句体1;
} else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
注意:如果关系表达式1结果为true,则执行语句体1;如果关系表达式1结果为false,则判断关系表达式2,如果为true则执行语句体2,如果为false则判断下一条关系表达式。如果每个关系表达式都不成立,则执行最后一条语句体。
6.3.2Switch语句
switch (表达式) {
case 1:
语句体1;
break;
case 2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
switch语句的执行:通过计算表达式的值,然后与case后 值进行一一匹配。如果存在相匹配到的值,则执行case后面对应的语句体,然后通过break退出switch语句。如果未找到相匹配的值,则执行default后面的语句体,再通过break退出switch语句。
注意:case穿透,如果在表达式匹配case值的过程中,匹配到后,执行完语句体,未存在break语句,则会继续执行下面的语句体,直至遇到break退出switch语句。
6.4循环语句
循环:在语句满足循环条件的情况下,就会执行循环体语句,直至循环条件不满足,则跳出循环语句。
6.4.1for循环
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
for循环执行顺序:初始化语句->条件判断语句->true->循环体语句->条件控制语句->条件判断语句->false->跳出循环。
初始换语句:可以用来标识循环开始的初始化设置。
条件判断语句:在判断语句返回true,则执行循环体语句;如果判断语句返回false,则跳出循环。
条件控制语句:用来控制循环是否能够继续执行。
循环体语句:循环过程执行的语句。
6.4.2while循环
初始化语句;
while (条件判断语句) {
循环体语句;
条件控制语句;
}
while循环执行顺序:和for循环的执行顺序一止,但有时候可能条件判断语句为”true“,不断执行,退出循环的标准是循环体中存在break语句。
6.4.3dowhile循环
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
dowhile循环执行顺序:初始化语句->循环体语句->条件控制语句->条件判断语句->true->循环体语句->条件控制语句->条件判断语句->false->跳出dowhile循环
6.4.4三种循环的对比
先判断:for循环、while循环
先执行:dowhile循环
在循环体中定义了变量,在跳出循环体之后再无使用权了,因为在循环体内的变量属于局部变量。
6.4.5循环控制语句
break:跳出循环语句
continue:跳出当前循环语句
7.Random
Random是java自带的一个类功能,类似于之前讲到的Scanner,Random可以用于产生随机数。
Random random = new Random();
int number = random.nextInt(100);
number的值可以是0-99的整数值,属于左包右闭。
8.IDEA的安装与使用
8.1IDEA简介
IDEA全称为IntelliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。
集成环境就是把代码编写,代码编译,代码执行,代码调试等等多种功能综合到一起的开发工具。
IDEA下载地址:https://www.jetbrains.com/idea/
8.2 项目结构介绍
project(项目)->module(模块)->package(包)->class(类)
8.3IDEA中常用的快捷键
psvm+回车:快速写出main方法
sout+回车:快速写出输出语句
Alt+1:打开或者关闭工程目录结构
Alt+4:打开过着关闭控制台
Ctrl+D:向下复制一行
Ctrl+X:剪切当前行
Ctrl+Alt+L:格式化代码
Alt+Enter:修正代码
Ctrl+/:单行注释
Ctrl+Shift+/:多行注释
Alt + shift + ↑:上移行
Alt + shift + ↓:下移行
9.数组
数组可以存放同一类型的多个数据
9.1数组的定义
//第一种
int[] a;
char[] b;
double[] c;
//第二种
int a[];
char b[];
double c[];
9.2数组的动态化
数据类型[] 数组名 = new 数据类型[数组长度];
动态化定义后直接规定数组固定的长度,为不可变数组
9.3数组访问
索引:成功的定义数组长度后,在调用某一个数组元素时,采用数组的索引调用,从0开始。
数组名[索引];
9.4静态初始化数组
静态化初始化是在数组创建的过程中,给数组元素赋值。
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}
数据类型[] 数组名 = {元素1,元素2,元素3...}
9.5数组操作遇到的问题
1.数组索引应该小于数组的长度,如果索引值大于等于数组长度则会抛出ArrayIndexOutOfBoundsException 数组越界异常。
2.若数组为空(空不代表数组的元素值为0,而是数组指向的地址为空),调用数组元素会抛出 NullPointerException 空指针异常。
9.6数组的遍历
for(int i = 0; i<arr.length;i++){
System.out.println(arr[i]);
}
9.7.二维数组
动态初始化格式:
数据类型[][] 变量名 = new 数据类型[m][n];
数据类型 变量名 = new 数据类型{ {元素1, 元素2...} , {元素1, 元素2...};
数据类型 变量名 = { {元素1, 元素2...} , {元素1, 元素2...} ...};
10.方法
10.1概念
方法是具有一定功能的已命名代码块。
10.2方法的定义和使用
public static void 方法名 ( ) {
// 方法体;
}
方法名();
注意:方法必须先定义,再调用,否则会报错
10.3带参方法的定义和使用
public static void 方法名 (参数1) {
方法体;
}
public static void 方法名 (参数1, 参数2, 参数3...) {
方法体;
}
、
方法名(参数);
方法名(参数1,参数2);
注意:调用方法使用的是实参,将实参的值传递给方法的形参中。
10.4有返回值方法的定义和使用
public static 数据类型 方法名 ( 参数 ) {
return 数据 ;
}
注意:
1.return返回的数据,其数据类型要与方法名前的数据类型一致。如果无返回值,则数据类型为void。
2.方法内可以调用方法,但是方法内不能嵌套定义方法。
3.void类型的方法中,最然没有返回值,但是可以使用return,退出方法。
10.5方法重载
方法重载:在一个类中,定义相同名称的方法,但是方法的参数数量、参数类型不一致。在调用方法时,Java会根据参数的不同,自动的匹配想通过的方法。(方法重载与返回值无关,不能通过返回值来判定两个方法是否相互构成重载 )
10.6参数的传递
对于基本类型的传递,将实参的值传递给方法中的形参。方法结束后,并不会影响实参的值。
对于引用类型的传递,将实参的地址值传递给方法中的形参。方法结束后会影响实参的值。
11.进制
11.1进制的格式
十进制:Java中,数值默认都是10进制,不需要加任何修饰。
二进制:数值前面以0b开头,b大小写都可以。
八进制:数值前面以0开头。
十六进制:数值前面以0x开头,x大小写都可以。
注意: 书写的时候, 虽然加入了进制的标识, 但打印在控制台展示的都是十进制数据.
System.out.println(10);
System.out.println("二进制数据0b10的十进制表示为:" + 0b10);
System.out.println("八进制数据010的十进制表示为:" + 010);
System.out.println("十六进制数据0x10的十进制表示为:" + 0x10);
11.2原码反码补码
由于在计算机中,所有的数据都是以二进制补码的形式在进行运算,而补码是通过原码和反码得出的。
原码:将十进制直接转换为二进制,但是八位二进制中,首位标识数值的正负。
反码:正数的反码与原码相同;负数的反码与原码逐位相反,但符号位除外。
补码:正数的补码与原码相同;负数的补码为反码+1。
11.3位运算
& 位与 : 遇false则false, 遇0则0
| 位或 : 遇true则true, 遇1则1
^ 位异或 : 相同为false, 不同为true
~ 取反 : 全部取反, 0变1, 1变0 (也包括
<<左移:左边符号位丢弃,右边补0
>>右移:右边符号位丢弃,左边补0
---------------------------------------------------------------------------------------------------------------------------------
内容有部分存在书籍、课堂、网络记录,如有雷同纯属巧合