1、Java是美国sun公司(Stanford University Network)在1995年推出的一门计算机高级编程语言。
2、Java早期被称为Oak(橡树),后期改名为Java。
3、Java之父:詹姆斯·高斯林(James Gosling)
4、2009年sun公司被Oracle(甲骨文)公司收购
1、世界上最流行的编程语言之一,在国内使用最为广泛的编程语言
2、可移植性、安全可靠、性能较好
3、开发社区最完善,功能最丰富
1、桌面应用开发
2、企业级应用开发
3、移动应用开发
4、服务器系统
5、大数据开发
6、游戏开发
技术体系 | 说明 |
---|---|
Java SE:标准版 | Java技术的核心和基础 |
Java EE:企业版 | 企业级应用开发的一套解决方案 |
Java ME:小型版 | 针对移动设备应用的解决方案 |
1、Java语言的产品是JDK(Java Development Kit:Java开发者工具包),必须安装JDK才能使用Java语言。JDK产品的发展使。
3、如何获取JDK
查询JDK的版本号
java -version
javac -version
查看版本,如果版本提示与自己安装的版本号一致,则代表安装成功。
5、java和javac介绍
java是执行工具
javac是编译工具
将来我们写好的java程序都是高级语言,计算机底层是不能识别这些语言的。
必须先通过javac编译工具进行翻译,然后再通过java执行工具执行才可以驱动机器干活
常用命令 | 说明 |
---|---|
盘符: | 切换到某个盘下 |
dir | 查看当前路径下的文件信息 |
cd | 进入单级目录:cd 目录名 进入多级目录:cd 路径 回退到上一级目录:cd … 回退到盘符根目录:cd \ |
cls | 清屏 |
1、编写代码:源代码文件(.java)
2、编译代码:字节码文件(.class)
3、运行代码
1、第一个程序的代码如下:
public class HelloWord{//HelloWord是类名
public static void main(String[] args){
System.out.println("Hello Word");//打印Hello Word
}
}
注意:
1、编译:javac 文件名.java
//编译上述文件
javac HelloWord.java
2、运行:java 类名
//运行上述代码
java HelloWord
注意:在源代码根目录下执行dom命令
1、Windows的文件扩展名没有勾选
2、代码写了,但是忘记保存了
3、文件名和类名不一致。
4、大小写错误,单词拼写错误,存在中文符号,找不到main方法。
5、括号不配对。
6、编译或执行工具使用不当。
一个什么错都犯过的程序员,才是真正的程序员!
1、机器语言就是01代码
2、计算机底层都是硬件电路,可以通过不通电和通电,表示0、1。
4、最早期的程序员通过机器语言编程的形式
1、更简单:使用接近人类自己的语言书写,翻译器再将其翻译成计算机能理解的机器指令
1、原意是臭虫或者虫子,现在用来指代在电脑系统或者程序中隐藏的一些问题或者漏洞。
2、修复漏洞就叫debug
3、bug的创始人:格蕾丝.赫伯
Path环境变量用于记住程序路径,方便在命令行窗口的任意目录启动程序。
当我们在Pth中配置某个程序路径后,启动命令行窗口启动程时,是如何去找该程序的。
1、命令行窗口的任意目录可以使用javac和java,是不是也需要为其配置Path环境变量呢?
记事本、UltraEdit、EditPlus、TextPad、NotePad++、sublime,
编写代码时没有错误提醒、没有智能提示、需要自己进行编译、执行。功能不够强大。
1、把代码编写,编译,执行等多种功能综合到一起的开发工具,可以进行代码智能提示,错误提醒,项目管理等等。
2、常见Java的IDE工具有:Eclipse、MyEclipse、IntelliJ IDEA、Jbuilder、NetBeans等。
1、IntelliJ IDEA一般简称IDEA,是Java编程语言开发的集成环境,在业界被公认为最好的java开发工具。
2、IDEA在代码错误提醒,智能代码补全等多方面表现的都非常优秀,是]ava开发企业级首选工具。
下载:https://www.jetbrains.com/idea/
安装:傻瓜式安装,建议修改安装路径(不要安装在有空格和中文的路径下)。
结论:这些结构的划分,是为了方便管理项目技术和代码文件的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gKXS0nQK-1684550528638)(./\img\idea中设置主题、字体.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MXeKZq8Q-1684550528640)(.\img\idea常用快捷键.png)]
注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便解释程序。
单行注释
//注释内容
多行注释
/*
注释内容1
注释内容2
*/
文档注释
/**
注释内容
注释内容
*/
注释不影响程序的执行,编译后的class文件已经没有注释了。
计算机是用来处理数据的,字面量就是告诉程序员:数据在程序中的书写格式。
变量就是用来存储一个数据的内存区域(可以理解为盒子),里面存储的数据可以变化。
数据类型 变量名 = 初始值;
数据类型:强制限制盒子存储数据的形式。例如:int(整型)、double(小数类型)
变量名:取名字,首字母小写,有意义
初始值:存储的初始数据
double money = 6.0;
System.out.println(money);//6
money=money+4; System.out.println(money);//10
int age=21;
System.out.println(age);
age=18;
System.out.println(age);
只有0、1,按照逢2进1的方式表示数据
除二取余法
字符在计算机中是如何存储的
ASCII编码表:即美国信息交换标准编码,规定了现代英语、数字字符、和其他西欧字符对应的数字编号。
字符存的是ASCII码表中对应的数字二进制形式。
字符’A’对应的数字是65
字符’a’对应的数字是97
字符’0’对应的数字是48
图片数据-彩色图
Java程序中支持书写二进制、八进制、十六进制的数据,分别需要以0B或者0b、0、0X或者0x开头。
数据类型就是约束变量存储数据的形式
注意:
标识符就是由一些字符、符号组合起来的名称,用于给类、方法、变量等起名字的规矩
在表达式中,小范围类型的变量会自动转换成当前较大范围的类型在运算。
注意事项
类型范围大的数据或者变量,不能直接赋值给类型范围小的变量,会报错。
注意事项
对字面量或者变量进行操作的符号
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 参考小学数学一年级 |
- | 减 | 参考小学数学一年级 |
* | 乘 | 参考小学数学二年级,与“✖”相同 |
/ | 除 | 与“➗”相同,注意:在Java中两个整数相除结果还是整数。因为最高类型是整数 |
% | 取余 | 获取的是两个数据做除法的余数 |
“+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串
独门秘籍:能算则算,不能算就在一起(计算机很聪明)
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量自身的值加1 |
– | 自减 | 变量自身的值减1 |
注意:
如果单独使用放在前后没有区别
++、–如果不是单独使用(如在表达式中、或者同时有其他操作),放在变量前后会存才明显区别
放在变量前面,先对变量进行+1、-1,再拿变量的值进行运算
int a = 10;
int rs = ++a;
放在变量后面,先拿变量的值进行运算,再对变量的值进行+1、-1
int b= 10;
int rs = b++;
int a = 10;//先看“=”右边,把数据10赋值给左边变量a存储
符号 | 作用 | 说明 |
---|---|---|
+= | 加后赋值 | a+=b等价于a = (a的数据类型)(a+b);将a+b的值给a |
-= | 减后赋值 | a-=b等价于a = (a的数据类型)(a-b);将a-b的值给a |
*= | 乘后赋值 | a*=b等价于a = (a的数据类型)(a*b);将a*b的值给a |
/= | 除后赋值 | a/=b等价于a = (a的数据类型)(a/b);将a/b的商给a |
%= | 取余后赋值 | a%=等价于a = (a的数据类型)(a%b);将a%b的值给a |
注意:扩展的赋值运算符隐含了强制类型转换
是对数据进行条件判断的符号,最终会返回一个比较的布尔值(false 、true)
**注意:**在做相等判断时,千万不要把==误写成=
可以把多个条件的布尔结果放在一起,最终返回一个布尔结果
**注意:**逻辑与“&”、逻辑或“ | ”:无论左边是false还是true,右边都要执行
格式:
条件表达式?值1:值2
执行流程:首先计算关系表达式的值,如果为true,返回值1,如果为false,返回值2
在表达式中,哪个运算符先执行后执行是要看优先级的,例如“*、/”的优先级高于“+、-”。
请完成Java程序与用户交互,比如录入用户输入名称、年龄,怎么办?
https://www.oracle.com/java/technologies/downloads/#jdk19-windows
注意:
Java提供了一些流程控制语句,来控制程序的执行流程
如果你没有写其他的结构,按照代码的先后顺序,依次执行程序中大多数的代码是这样执行的。
根据判定的结果(真或假)决定执行某个分支的代码
格式1
if(条件表达式){
语句体;
}
格式2
if(条件表达式){
语句体1;
}else{
语句体2;
}
格式3
if(条件表达式1){
语句体1;
}else if(条件表达式2){
语句体2;
}else if(条件表达式3){
语句体3;
}
...
else{
语句体n+1;
}
也是匹配条件去执行分支,适合做值匹配的分支,结构清晰,格式良好
switch(表达式){
case 值1:
执行代码...;
bresk;
case 值2:
执行代码...;
bresk;
...
case 值n-1:
执行代码...;
bresk;
default:
执行代码n;
}
如果代码执行到没有写break的case模块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这是switch的穿透性
存在多个case分支的功能代码是一样是,可以用穿透性把流程集中到同一处处理,这样可以简化代码。
控制一段代码反复执行很多次
for(初始化语句;循环条件;迭代语句){
循环体语句(重复执行的代码);
}
1、while循环格式与执行流程
初始化语句;
while(循环条件){
循环体语句(被重复执行的代码)
迭代语句;
}
2、什么时候用for循环,什么时候用while循环
初始化语句
do{
循环体语句;
迭代语句;
}while(循环条件);
一直循环的执行下去,如果没有干预不会停下来。
循环中又包含循环
外部循环每执行一次,内部循环全部执行完一次。
跳出并结束当前所在循环的执行
用于跳出当前循环的当次执行,进入下一次循环
只能用于结束所在循环,或者结束所在switch分支执行
只能在循环中使用
作用:用于在程序中获取随机数的技术
(1)导包:告诉程序去JDK的那个包中找随机数技术
(2)写一行代码代表的到随机数对象
(3)调用随机数的功能获取0-9的随机数
nextInt功能只能生成:0至n-1之间的随机数,不包含n。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOj5hN62-1684550528660)(.\img\生成随机数的减加法.png)]
//导包
import java.util.Random;
数组就是用来存储一批同种类型数据的内存区域(可以理解成容器)。
数组适合做一批同样种类数据的存储
定义数组的时候直接给数组赋值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7S0pPdL-1684550528663)(.\img\数组的基本原理.png)]
==注意:==数组变量名中存储的是数组在内存中的地址,数组是引用类型。
//获取数组的长度(就是数组元素的个数)
System.out.println(arr.length);
数组的最大索引:数组名.length-1(前提:元素个数大于0)
定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据
就是对数组中的元素,进行升序(由小到大)或者降序(由大到小)的操作
选择排序
快速排序
插入排序
栈内存
方法运行时所进入的内存,变量也是存在这里的
堆内存
new出来的东西会在这块内存中开辟空间并产生地址
方法区
字节码文件加载时进入的内存
本地方法栈
寄存器
1、如果访问的元素位置超过最大索引,执行时会出现ArraylndexOutOfBoundsException(数组索引越界异常)
2、如果数组变量中没有存储数组的地址,而是nulL,在访问数组信息时会出现NullPointerException(空指针异常)
IDEA自带的断电调试(排错)工具,可以控制代码从断电开始一行一行的执行,然后详细观看程序执行的情况
方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用。
修饰符 返回值类型 方法名(形参列表){
放法体代码(需要执行的功能代码);
return 返回值;
}
方法必须调用才可以跑起来,调用格式:
方法名(参数);
方法定义时:返回值类型、形参列表可以按照需求进行填写。
1、方法的编写顺序无所谓
2、方法与方法之间是平级关系,不能嵌套定义
3、方法的返回值类型为void(无返回值),方法内部不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部必须使用return返回对应数据类型的数据
4、return语句下面,不能编写代码,因为永远执行不到,属于无效代码。
5、方法不调用就不执行,调用时必须严格匹配方法的参数情况
6、有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下。
1、修饰符:public static(暂时固定)
2、方法名称:自己取名,有意义,英文小写,驼峰模式。
3、方法体代码:完成自己需要写的功能代码即可
在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递。
同一个类中,出现多个方法名称相同,但是形参不同的,那么这些方法就是重载方法
对于相似功能的业务场景:可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。
return;可以立即跳出并结束当前方法的执行;return关键字单独使用可以放在任何方法中。
1、什么是面向对象编程?
面向:找、拿
对象:东西
面向对象编程:找或者拿东西过来编程
2、面向对象编程的好处,为什么用面向对象编程?
符合人类思维习惯,编程跟简单,更好理解
3、面向对象学什么?
学习自己设计对象并使用
学习面向对象的语法
总结:
垃圾回收:
注意:当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”
Java存在自动垃圾回收器,会定期进行垃圾清理
定义在类中的,可以用于初始化一个类的对象,并返回对象的地址。
修饰符 类名(形参列表){
...
}
例如:
public class Car{
...
//无参构造器
public Car(){
...
}
//有参构造器
public Car(Sting n,double p){
...
}
}
可以用于指定访问当前对象的成员变量、成员方法。
可以用于访问当前对象的成员变量、成员方法(代表了当前对象)。
面向对象的三大特征:封装,继承,多态
**封装:**告诉我们,如何正确设计对象的属性和方法。
**封装的原则:**对象代表什么,就得封装对应的数据,并提供数据对应的行为。
也可以称为实体类,其对象可以用于在程序中封装数据。
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中,方法外 | 常见于方法中 |
初始化值不同 | 有默认值,无需初始化 | 没有默认值 |
内存位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对像的创建而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的运行结束而消失 |
作用域 | 在所属的大括号中 |
1、Java写好的技术(功能代码),咱们可以直接调用
2、Oracle也为Java提供的这些功能代码提供了相应的API文档(技术说明书)
3、下载API文档:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
方式一:直接使用“ ”定义。(推荐方式)
String name = "传智教育";
方式二:通过String类的构造器创建对象。
构造器 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(String original) | 根据传入的字符内容,来创建字符串对象 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] chs) | 根据字节数组,来创建字符串对象 |
方法名 | 说明 |
---|---|
public blean equals(Object anObject) | 将此字符串与指定对象进行比较,只关心字符内容是否一致 |
public blean equalsIgnoreCase(String anotherString) | 将此字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致 |
方法名 | 说明 |
---|---|
public int length() | 返回此字符串的长度 |
public char charAt(int index) | 获取某个索引位置处的字符 |
public char[] toCharArray() | 将当前字符串转换成字符数组返回 |
public String substring(int beginIndex,int endIndex) | 根据开始和结束索引进行截取,得到新的字符串(包前不包后) |
public String substring(int beinIndex) | 从传入的索引处截取,截取到末尾,得到新的字符串 |
public String replace(CharSequence target,CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public String[] split(String regex) | 根据传入的规则切割字符串,得到字符串数组返回 |
集合是与数组类似,也是一种容器,用于装数据的。
ArrayList是集合中的一种,它支持索引。(暂时先学习这个,后期课程会学习整个集合体系)
构造器 | 说明 |
---|---|
public ArrayList() | 创建一个空的集合对象 |
方法名 | 说明 |
---|---|
pubilc boolean add(E e) | 将指定的元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中指定位置插入指定的元素 |
ArrayList:其实就是一个泛型类,可以在阶段约束集合对象只能操作某种数据类型
注意:集合中只能存储引用类型,不支持基本数据类型
方法名称 | 说明 |
---|---|
public E get(int index) | 返回指定索引处元素 |
public int size() | 返回集合中的元素个数 |
public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
public boolean remove(Objet o) | 删除指定的元素,返回删除是否成功 |
public E set(int index,Eelement) | 修改指定索引出的元素,返回被修改的元素 |
后续 JavaSE加强篇