发表时间:2022-03-25来源:网络
java是哪家公司哪一年推出的?
sun公司在1995推出的编程语言
java之父是谁?
詹姆斯.高斯林
java的主要发展历程?
1995由sun公司推出。
2004推出JDK1.5,这是里程碑式的版本。
2009年sun公司被oracle(甲骨文公司)收购。
目前最新版本JDK12。
java的三大技术架构
JavaSE:java标准版,主要用于桌面应用软件的开发。比如计算器,QQ软件等。
JavaEE:java企业版,基于JavaSE的企业级应用的开发。比如淘宝,京东,ERP系统等。(大型互联网)
JavaME:java微型版,应用于移动设备和电子类产品的嵌入式开发。比如手机游戏,手机软件等。(安卓,IOS,HTML,微信小程序)
java语言的特点
java语言具有简单易学、面向对象、健壮性、安全性、与平台无关性等特点。
什么是平台?
平台即操作系统,目前主流的有微软Windows系统,苹果Mac系统,Linux系统
什么是java跨平台?
通过java语言编写的应用程序可以在不同的操作系统上直接运行。具有一次编译,到处运行的特点。
java如何实现跨平台?
通过JVM虚拟机实现的跨平台。在不同的操作系统上安装对应的JVM虚拟机。
java跨平台的原理
java程序并非是直接运行的, javac编译器将java源程序(.java文件)编译成与平台无关的字节码文件(.class文件),然后通过java运行工具启动java虚拟机,由java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下, 只需安装不同的java虚拟机即可实现java程序的跨平台
JVM、JRK、JDK三者之间的关系
JVM:Java虚拟机,保证java程序跨平台。 //JVM保证java程序的跨平台性 JRE:Java运行环境,包含JVM和核心类库。如果只是想运行java程序,只要安装JRE即可。 //JRE=JVM+核心类库 核心类库包括:java.util包中的Random/Scanner/Arrays等 JDK:Java开发工具包,包含JRE和开发工具。如果程序员想要开发java程序,需要安装JDK环境 //JDK=JRE+开发工具 开发工具包括:编译工具javac.exe ,运行工具java.exe 等JVM、JRE、JDK关系图解
进入DOS命令行窗口
快捷键win + R打开运行窗口,输入cmd,按回车进入。
常用DOS命令
什么是环境变量
环境变量:指在操作系统中用来指定操作系统运行环境的一些参数
为什么要配置环境变量
开发java程序, 需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令),而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。 我们不可能把所有的java文件都放到JDK的bin目录下, 所以配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。
常见配置的环境变量
注释的作用?
对代码进行解释说明,便于开发人员理解和维护代码。
注释不会被程序编译和运行。
注释的分类?
单行注释 // 注释内容,单行注释可以嵌套。
多行注释 /* 注释内容 /,多行注释不能嵌套使用。
文档注释 /* 注释内容 */,文档注释不能嵌套使用。
什么是关键字?
在java语言中有特殊意义的英文单词。
java关键字的特点?
单词全部小写。
在高级开发工具中,关键字会有特殊的颜色标记。
java中的关键字/保留字
goto和const是java中的预留关键字(goto和const也叫保留字)。
什么是常量?
在程序运行过程中,其值不可以发生改变的量。
常量的分类
java是强类型的语言,每一个数据都有对应的数据类型。
位:计算机计算的基本单位,计算机底层是二进制 0 1
字节:计算机存储的基本单位,1字节=8位。
java数据类型分类?
基本数据类型:4型8种
整数:byte short int long (整数默认是:int类型)
小数:float double (小数默认是:double类型)
字符:char
布尔:boolean
引用数据类型:字符串,数组,类,接口 ,null
基本数据类型分类
什么是变量?
变量指程序运行过程中,其值在一定范围内会发生变化的量。
变量的定义格式
变量的分类
成员变量:(也叫全局变量,字段) 直接定义在类中,方法外,默认有初始值 1.类成员变量:使用static修饰符修饰的成员变量 2.实例成员变量:没有使用static修饰符修饰的成员变量 局部变量:变量除了成员变量之外,其他就是局部变量 分为:方法形参,方法内变量,代码块变量 没有初始化值,必须先初始化才能使用变量使用的注意事项
1、变量可以定义时初始化,也可以先定义,使用前进行初始化。 //定义的时候初始化 double d = 3.14; //先定义,后初始化 double d; d = 3.14; 2、没有初始化的变量不能直接使用。 int a ; System.out.println(a); //编译报错, 3、相同范围内,变量名不能重复。 //第一种:方法的形参上变量名不能相同 public static void sum(int a,int a){ //编译报错 } //第二种:一对 {} 内变量名不能相同 public static void sum(){ int a = 10; //编译报错 int a = 20; //编译报错 } 4、整数默认是int类型,定义long类型时需要加L 或者l,建议加L。 long num = 10L; 5、小数默认是double类型,定义float类型的时候需要在数字后面加F或者f,建议加F。 float f = 3.14F; 6、一行代码上可以定义多个变量。(不推荐) int a=10,b=20; int a,b =20; a=10;变量的生命周期
存在位置生命周期开始生命周期结束在内存中的位置类成员变量使用static修饰的成员变量当所在字节码被加载进JVM当JVM停止方法区实例成员变量没有使用static修饰的成员变量当创建所在类的对象的时候当该对象被垃圾回收器回收堆局部变量方法形参,代码块中,方法内当代码执行到初始化变量的时候所在的方法/代码块结束栈标识符的作用
给 包,类,方法,变量起名的符号。
标识符的组成规则
大小写英文字母、数字、下划线_、美元符$、中文(不推荐)
注意事项:
1、不能是数字开头
2、不能是关键字
3、区分大小写
标识符的命名规范
小驼峰式命名:变量名、方法名
第一个单词首字母小写,从第二个单词开始每个单词的首字母大写。
大驼峰式命名:类名
每个单词的首字母都大写。
建议:标识符的起名尽量做到见名知意。
隐式类型转换(自动类型转换)
从范围小的类型到范围大类型的转换,系统会自动进行类型提升,称为自动类型转换。
强制类型转换
从范围大的类型到范围小的类型的转换,需要进行强制类型转换。
格式:
弊端:会造成数据精度丢失。尽量少用强制转换。
运算符:对常量或者变量进行操作的符号。
表达式:通过运算符连接起来的式子
常用的运算符
算术运算符、赋值运算符、自增自减运算符、关系运算符、逻辑运算符、三元运算符
byte、short、char变量之间进行运算时,类型自动提升为int。
变量参与运算时,最终结果以最高类型为准。
字符参与运算的规则:
将字符换算成编码表里对应的数值进行运算。
等价于:把char类型数据换成对应的十进制数来参与运算
编码表:
计算机底层使用二进制运算,所以文字和符号必须转换成二进制数才能被计算机识别,编码表就是将文字等符号编成对应的数的表格,因为二进制记录起来比较麻烦,所以使用十进制数进行文字编码。
世界上第一张编码表ASCII(美国标准信息交换码)。常用编码表都兼容ASCII码表。
常用的编码:
ASCII编码:美国标准信息交换码,世界上第一张编码表。
GB2312编码:简体中文编码,对常用汉字进行了编码,兼容ASCII。
GBK:加强版的中文编码表,对更多汉字进行了编码,兼容ASCII
UTF-8编码:万国码表,常作为浏览器上的网页编码,可以统一显示各国文字,兼容ASCII。
常见字符对应的十进制数:
‘ a’ ~ ‘z’ : 97 ~ 122
‘A’ ~ ‘Z’ : 65 ~ 90
‘0’ ~ ‘9’ : 48 ~ 57
基本汉字:19968 ~ 40869
char类型表示的范围:0~65535
ASCII编码表
与字符串进行 “+” 运算,是进行字符串拼接操作,运算结果还是字符串。
字符串只能进行 + 运算
赋值运算符作用
将表达式或者常量值赋给变量。
赋值运算符分类
注意:扩展的赋值运算符隐含了强制类型转换。
/* 赋值运算符: 扩展赋值运算符隐含了强制类型转换 */ public class FuZhiDemo { public static void main(String[] args) { //1. 基本赋值运算符 = int a = 10; System.out.println(a); //2. 扩展赋值运算符 int b = 20; // b+=5; // b-=5; // b*=5; // b/=5; b%=5; //b = b%5; System.out.println(b);//0 // 3. 扩展赋值运算符隐含了强制类型转换 byte num = 10; num+=5; // 相当于:num = (byte)(num+5); // num = num + 5; //报错 System.out.println(num); } }1、++ 、 – 可以放在变量的前面,也可以放在变量的后面。
单独进行运算时放在前面或者后面,效果一样。
2、参与其他运算的时候:
a++ :先将a的值参与其他运算,运算结束后再自身加1。
++a :先将a自身加1,再将自增后的值参与其他运算。
自减与自增规则相同。
3、最常见用法:单独使用。

在计算机内,有符号数有3种表示法:原码、反码和补码,所有数据的运算都是采用补码进行的
写出二进制,正数符号位为0,负数符号位为1
正数的反码是本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
流程控制语句分为哪几类
顺序结构、选择(分支)结构、循环结构
按照代码书写顺序,从上往下执行。
if语句格式1
if (关系表达式) { 语句体; }执行流程:
1、首先计算关系表达式的值。
2、表达式的值为 true 时执行语句体,为 false 时不执行语句体。
3、往下执行 if结构后面的语句内容。
if语句格式2
if(关系表达式){ 语句体1; }else{ 语句体2; }执行流程:
1、首先计算关系表达式的值。
2、表达式的值为 true 时执行语句体1,为 false 时执行语句体2。
3、继续执行 if-else 结构后面的语句内容。
if语句格式3
if(关系表达式1){ 语句体1; }else if(关系表达式2){ 语句体2; }else{ 语句体3; } //【注意】 该格式中可以有多个else if结构,可以没有else结构。执行流程:
1、首先计算关系表达式1的值。
2、如果为 true 则执行语句体1,为 false 时计算关系表达式2的值。
3、如果为 true 则执行语句体2,为 false 时计算关系表达式3的值,以此类推。
4、所有关系表达式都为false时,执行else里的语句体n+1。
switch语句格式
switch(表达式){ //整数 byte short int //char 字符串 //枚举 case 值1: 语句体1; break; case 值2: 语句体2; break; ... default 语句体n+1; break; }执行流程:
1、先计算括号中表达式的值。
2、将结果依次和case后面的值比较,匹配上的就执行case对应的语句体,遇到break就结束switch结构。
3、当所有的case值都不匹配时,执行default后面的语句体n+1, default省略break,效果一样。
switch的注意事项:
1、switch中表达式的值:byte short char int , 枚举, 字符串
2、case 后面的值不能重复,不能是变量,只能是常量
3、case的值都不匹配的时候,执行default的内容,default可以省略(不建议),default可以改变位置(不建议)
4、break的作用是结束switch语句
5、break可以省略,但是会有case穿透现象
case穿透现象:不用再判断case的值,直接执行下面的语句,直到遇到break或者程序结束。
case穿透案例:
/* 春夏秋冬 需求: 一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份, 请用程序实现判断该月份属于哪个季节,并输出。 春:3、4、5 夏:6、7、8 秋:9、10、11 冬:12、1、2 */ import java.util.Scanner; public class SwitchDemo { public static void main(String[] args) { //键盘录入月份数据,使用变量接收 Scanner sc = new Scanner(System.in); System.out.println("请输入一个月份:"); int month = sc.nextInt(); //case穿透 switch(month) { case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; case 12: case 1: case 2: System.out.println("冬季"); break; default: System.out.println("你输入的月份有误"); } } }循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候结束循环,否则循环将一直执行下去,形成死循环。
for循环格式
for (初始化语句; 条件判断语句; 条件控制语句) { 循环体语句; } //案例:for循环打印5次HelloWorld for(int i=1; i for(int i=1; i continue; //遇到continue开始下次循环:打印奇数 // break; //遇到break结束整个循环 } } System.out.println(i); } } /* 模拟一个用户系统 控制台显示一个用户菜单: 输入数字选择您要的操作: 1.新增用户 2.修改用户 3.删除用户 4.查看信息 5.退出系统 工作人员输入对应的编号进行操作,当输入5时退出系统。 */ import java.util.Scanner; public class BreakDemo{ public static void main(String[] args){ //创建键盘录入对象 Scanner sc = new Scanner(System.in); //死循环 loop:while(true){ System.out.println("输入数字选择您要的操作:"); System.out.println("1.新增用户 2.修改用户 3.删除用户 4.查看信息 5.退出系统"); int num = sc.nextInt(); switch(num){ case 1: System.out.println("新增成功"); break; case 2: System.out.println("修改成功"); break; case 3: System.out.println("删除成功"); break; case 4: System.out.println("当前用户数1000"); break; case 5: System.out.println("欢迎使用本软件"); //结束指定循环:loop break loop; //结束loop标志的的循环 default: System.out.println("您的输入有误,请重新输入!"); } } } }认识Rondom类
Random是java提供的工具类,位于【 java.util 】包下,用于产生随机数。
Random类的使用步骤
说明:
nextInt( 数值 ):代表随机生成并返回一个整数,如果括号数值为10,表示生成0-9的整数,数值20,表示生成0~19的整数
什么是数组初始化
java中变量使用前必须完成初始化,数组也一样,需要完成初始化才能使用。
数组初始化就是为数组分配内存空间,并为数组中每个元素赋值。
数组的初始化分为:
动态初始化
静态初始化
什么是动态初始化
只给定数组的长度,由系统给出默认初始化值。
动态初始化的格式
格式说明
int[] arr = new int[5]; 等号左边: int:数组的数据类型 []:代表这是一个数组 arr:代表数组的名称 等号右边: new:为数组开辟内存空间 int:数组的数据类型 []:代表这是一个数组 5:代表数组的长度数组变量存储的是什么
数组在堆内存中的地址值
什么是索引
数组索引:数组元素的编号,从0开始,最大值为数组长度-1。
可以通过索引操作数组元素。
数组元素访问的格式


各个内存区的作用
数组元素的默认初始化值
整数类型 0 浮点类型 0.0 字符类型 空字符 ' ' 布尔类型 false 引用类型 null 19.7.1 一个数组的内存图

其中任意一个数组改变了堆中元素的值,其他的数组都会受到影响
什么是静态初始化
在创建数组时,直接确定元素的值。
静态初始化的格式
静态初始化简化格式
数据类型[] 数组名 = {元素1, 元素2, 元素3...}; //示例 int[] arr = {1,2,3};获取数组长度
数组名.length
遍历数组
一维数组:数组中的每一个元素都是一个值(基本类型和引用类型的值).
二维数组:数组中的每一个元素又是一个一维数组.
三维数组:数组中的每一个元素又是一个二维数组.

什么是方法
方法是将具有独立功能的代码组成一个整体,使其成为具有特殊功能的代码块。
方法的两个注意
1、方法必须先定义才能使用。(方法定义)
2、方法定义后不会自动运行,需要手动调用才能执行方法的功能。(方法调用)
同一个类中,出现了多个同名的方法,叫做方法重载。
20.3.2 构成方法重载的条件 1. 多个方法在同一个类中。 2. 多个方法名称相同。 3. 多个方法的参数列表不同(个数或者类型不同)。 注意: 方法重载与返回值和参数名称无关。 简单总结: 同一类中,方法名称相同,参数列表不同,即构成方法重载。 20.3.3 方法重载的作用方便程序员对参数不同,但是功能相同或相似的方法进行统一的命名和调用。
20.3.4 调用重载的方法调用时,虚拟机会根据参数列表的不同来区分调用对应的重载方法。
结论:
方法参数为基本数据类型时,参数为值传递,形式参数的改变不会影响实际参数
代码:

什么是引用类型数据?
在堆内存中创建,并产生了一个地址值的数据。(数组、对象,接口)
结论:
方法参数为引用数据类型时,参数为地址传递,形式参数的改变会直接影响实际参数。
代码:

爱鸽者手机版下载v3.2.9 安卓版
243.57MB |商务办公
一品威客网接单app(一品众包)下载v2.7.1 安卓最新版
55.01MB |商务办公
诸葛找房网官方版下载v4.8.1.1 安卓最新版
66.6MB |生活服务
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14