学习的重点
1.如何快速学习java技术
2.Java运行机制
3.JDK
4.Java开发规范
5.数据类型
6.二进制
7.位运算符
8.循环
9.数组
10.成员方法
11.成员方法传参机制
12.构造器
13.封装
14.继承
15.多态
16.类变量和类方法
17.接口
18.内部类
19.异常系统图
20.异常处理
21.String
22.StringBuffer
23.StringBuilder
24.集合框架系统
25.ArrayList
26.Vector
27.HashSet
28.HashMap
29.自定义泛型
30.Synchronized
31.互斥锁
32.项目&学以致用
33.TCP编程
34.反射获取类的结构信息
35.MySQL数据类型
36.CRUD
37.MySQL的增删改查
38.mysql的函数
39.mysql的外连接
40.mysql的索引
41.JDBC API
42.事务
43.连接池
44.Druid
45.DAO增删改查-BasicDao
四六、三大常用类
47.分组、捕获、反向引用
48.元字符
49.Lambda
50.函数式接口
51.stream API
52.类型推断
53.集合增强API
java就业方向
javaEE
电子商务、团购、众筹sns(社交网络)、教育平台、金融、搜索。
大数据软件工程师
1.大数据应用工程师
2.大数据算法工程师
3.大数据分析挖掘
Android软件工程师
Java开发场景
SSM
Spring(轻量级容器框架)
SpringMVC(分层的web开发框架)
MyBatis(持久框架)
Java应用领域
1.企业级应用
2.Android平台应用
3.移动应用
(LTS)长期支持 8&11
Java语言的重要特征
1.Java语言面向对象(oop)
2.Java语言强壮。Java强型机制、异常处理、垃圾自动收集等Java程序健壮性的重要保证。
3.Java语言是跨平台的。即:一个编译好的.class文件可以在多个系统下运行,称为跨平台
4.JAVA语言是解释性的。
解释性语言:Javascript,PHP,java 编译语言:c/c
区别在于:解释性语言,编译代码,不能直接由机器执行,编译语言,编译代码,可以直接由机器执行,c/c 。
jbk
JVM:java虚拟机
java核心机制,java虚拟机【JVM java virtual machine】
1.JVM它是一种具有指令集并适用于不同存储区域的虚拟计算机。负责执行指令,管理数据、内存、寄存器,包括在内jdk中。
2.对于不同的平台,有不同的虚拟机。
3.java虚拟机制屏蔽了底层运行平台的差异,实现了一次编译,到处运行
jdk基本介绍
1.jdk全程(java Development Kit java开发工具包)
jdk = JRE java开发工具包【java,javac,javadoc,javap等】
2.JDK是提供了给java开发人员使用的,包括java还包括开发工具JRE。
所以安装了JDK,不需要单独安装JRE了。
JRE基本介绍
1.JRE(java Runtime Environment java运行环境)
JRE = JVM java核心类库[类]
2.包括java虚拟机(JVM java Virtual Machine)和 java程序所需的核心类库,
如果你想运行一个好的开发java程序在计算机中安装程序JRE即可。
JDK,JRE,JVM关系
1.JDK = JRE 开发工具集(例如Javac。java编译工具等))
2.JRE = JVM Java SE标准类库
3.JDK = JVM Java SE标注类库 开发工具集
4.如果你只想运行开发.class文件 只需JRE
第一个程序
//这是java快速入门,演示java的开发步骤 ////代码相关说明 //1.public class Hello 表示Hello是个类,是个类public共有的类 //2.Hello{}表示一个类的开始和结束 //3.public static void main(Strin[] args)表示我们程序入口的主要方法 //4.main() {}表示方法的开始和结束 //5.System.out.println("hello,world~");表示输出“hello,world~”到屏幕 //6.;表示句子的结尾 //7.javac -encoding UTF-8 *.java 如遇错误: 编码GBK不可映射字符 public class Hello {
// 编写一个main方法 public static void main(String[] args){
System.out.println("hello,world~"
)
;
55
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQLnSIm8-1658839327544)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1648950884639.png)]
java执行流程分析
java源文件——javac编码——.class文件(字节码文件)——java运行——结果
Java 开发注意事项和细节说明
1.java源文件以.java 为拓展。源文件的基本组成部分是类(class),如本类中的Hello类。
2.java应用程序的直行入口是main()方法。他有固定的书写格式:
public static void main(String【】args){……}
3.java语言严格区分大小写。
4.java方法由一条条语句构成,每个语句以“;”结束。
5.大括号都是成对出现的,缺一不可。【习惯,先写{}再写代码】
6.一个源文件中最多只有一个public类。其他类的个数不限。
7.如果原文件包括一个public类,则文件名必须按该类名命名!
8.一个与文件中最多只能有一个public类,其他类的个数不限,也可以将main方法写在非public类中,然后制定运行非public类,这样入口方法就是非public的main方法。
如何快速学习技术或者知识点、心得分享
需求
1.工作需求
2.跳槽,对方要求
3.技术控
|
|
看看能否使用传统技术解决
1.能解决,但是不完美
2.解决不了
|
|
引出我们学习的新技术和知识点
|
|
学习新技术或者知识点的基本原理和基本语法(不要考虑细节)
|
|
快速入门(基本程序,crud)
|
|
开始研究技术的质疑事项使用细节,使用规范,如何优化=》没有止境,技术魅力
转义字符
java常用的转义字符
1.\t:一个制表位,实现对齐的功能。
2.\n:换行符
3.\ \ :一个\
4.\ “:一个”
5.\ ‘:一个’
- \ r:一个回车 System.out.println(“xxxx\rccccc”);
在控制台,输入tab键,可以时间命令补全。
注意\r
class Tiger{
public static void main(String[] args){
System.out.println("张正杰\r大帅");
}
}
大帅杰
class Tiger{
public static void main(String[] args){
System.out.println("张正杰\r\n大帅");
}
}
张正杰 大帅
class Tiger{
public static void main(String[] args){
System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t1000");
}
}
书名 作者 价格 销量 三国 罗贯中 120 1000
注释 comment
单行注释
/ /
多行注释
/* */
多行注释里面不允许有多行注释嵌套
文档注释
注释内容可以被jdk提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类
javadoc -d 文件夹名 -xx -yy Demo3.java
//文档注释
/** *@author 张正杰 *@version 1.0 */
public class comment02{
public static void main(String[] args){
}
}
javadoc -d d:\temp -author -version -encoding UTF-8 comment02.java
@author | 标识一个类的作者 | @author description |
---|---|---|
@deprecated | 指名一个过期的类或成员 | @deprecated description |
{@docRoot} | 指明当前文档根目录的路径 | Directory Path |
@exception | 标志一个类抛出的异常 | @exception exception-name explanation |
{@inheritDoc} | 从直接父类继承的注释 | Inherits a comment from the immediate surperclass. |
{@link} | 插入一个到另一个主题的链接 | {@link name text} |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | Inserts an in-line link to another topic. |
@param | 说明一个方法的参数 | @param parameter-name explanation |
@return | 说明返回值类型 | @return explanation |
@see | 指定一个到另一个主题的链接 | @see anchor |
@serial | 说明一个序列化属性 | @serial description |
@serialData | 说明通过writeObject( ) 和 writeExternal( )方法写的数据 | @serialData description |
@serialField | 说明一个ObjectStreamField组件 | @serialField name type description |
@since | 标记当引入一个特定的变化时 | @since release |
@throws | 和 @exception标签一样. | The @throws tag has the same meaning as the @exception tag. |
{@value} | 显示常量的值,该常量必须是static属性。 | Displays the value of a constant, which must be a static field. |
@version | 指定类的版本 | @version info |
java代码规范
1.类、方法的注释,要以Javadoc的方法来写。
2.非java doc的注释,往往是给代码的维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题。
3.使用tab操作,实现缩进,默认整体右边移动,时候用shift+tab整体向左移。
4.运算符和 = 两边习惯性各加一个空格。比如:2 + 4 * 5 + 345 - 89
5.源文件使用utf-8编码
6.行宽度不要超过80字符
7.行代码编写次行风格
和行尾风格
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c4Na98zs-1658839327546)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1648986206139.png)]
DOS命令(了解)
dos 的基本原理
1.接受指令
2.解析指令
3.执行指令
dos常用命令
1.查看当前目录是有什么:dir dir d:\abc2\test200
2.切换到其他盘下:盘符号 cd
演示:切换到c盘 cd /D c:
3.切换到当前盘的其他目录下(使用相对路径和绝对路径演示)
案例演示:cd d:\abc2\test200\ cd …\ … \ abc2 \ test200
4.切换到上一级:
案例演示: cd…
5.切换到根目录: cd\
案例演示:cd \
6.查看指定的目录下所有的自己目录
tree 盘符路径 tree d:\abc
7.清屏
cls【苍老师】
8.退出DOS
exit
9.md[创建目录],rd[删除目录],copy[拷贝文件],del[删除文件],echo[输入内容到文件],type[],move[剪切]
路径
相对路径
从当前目录开始定位,形成的一个路径
绝对路径
从顶级目录d,开始定位,形成的路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dGukLim-1658839327546)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1648988411674.png)]
变量
概念
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)
变量使用注意事项
1.变量表示内存中的一个存储区域【不同的变量,类型不同,占用的空间大小不同,比如:int 4个字节,double 8个字节】
2.该区域有自己的名称【变量名】和类型【数据类型】
3.变量必需先声明,后使用
4.该区域的数据可以在同一类型范围内不断变化
5.变量在同一作用域内不能重名
6.变量=变量名+值+数据类型
+号的使用
1.当左右两边都是数值型时,则做加法运算
2.当左右两边有一方为字符串,则做拼接运算
public class comment02{
public static void main(String[] args){
System.out.println(100 + 10);
System.out.println("100" + 10);
System.out.println(100 + 10 + "hello");
System.out.println("hello" + 100 +10);
}
}
110 10010 110hello hello10010
数据类型 *
1.java数据类型分两大类基本数据类型,引用数据类型
基本数据类型
基本数据类型有8个
数值型:【byte字节[1],short短整型[2],int[4],long[8],float[4],doubke[8]】char[2],boolean[1]
引用类型
【类(class),接口(interface),数组([])】
整数数据类型
类型 | 占用存储空间 | 范围 |
---|---|---|
byte[字节] | 1字节 | -128~127 |
short[短整型] | 2字节 | -(215)~215-1 -32760~32767 |
int[整型] | 4字节 | -231~231-1 -2147483648 - 2147483648 |
long[长整型] | 8字节 | -2^63 ~ 2^63-1 |
1.java个整数类型有固定的的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性.
2.java的整形常量(具体值)么认为int类型,声明long型常量需后加’l’或’L’
3.java程序中变量常声明为int型,除非不足以表示大数,才使用long
4.bit:计算机中的最储存单位,byte:计算机中基本储存单位,1byte = bit
[二进制再详细说,简单举例一个byte 3 和 short 3]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J749UJkI-1658839327547)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1649034149601.png)]
浮点类型
类型 | 占用存储空间 | 范围 |
---|---|---|
单精度float | 4字节 | -3.403E38 ~ 3.403E38 |
双精度double | 8字节 | -1.798E308 ~ 1.798E308 |
1.浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
2.尾数部分可能丢失,造成精度损失(小数都是近似值)
细节
1.与整数类型类似,java浮点类型也有固定的范围和字段长度,不受具体OS的影响.[float 4 个字节 double 是 8个字节]
2.java的浮点型常量默认为double型,声明float型常量,需后加’f’ 或 ‘F’
3.浮点型常量有
十进制数形式:如 5.12 521.0f .521 (必须有小数点)
4.通常情况下,应该使用double型,因为它比float型更精准.
double num9 = 2.12345678;
float num10 = 2.123456789F;
5.浮点型使用陷阱: 2.7 和 8.1 / 3 比较
float num = 1.1; //错
float num = 1.1F;//对
double num = 1.1 //对
double num = 2.3 //对
double num1 = 2.7;
double num2 = 8.1 / 3;
System.out.println(num1);
System.out.println(num2);
if(Math.abs( num1 - num2 ) < 0.000001){
System.out.println("差值很小");
}
System.out.println(Math.abs(num1 - num2));
2.7 2.6999999999999997 差值很小 4.440892098500626E-16
API 文档
1.API(Application Programming Interface ,应用程序编写接口)是java提供的基本编程接口(java提供的类还有相关方法).中文文档:https://www.matools.com
2.java语言提供了大量的基础类,因此Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。
3.java类的组织形式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNNB41CJ-1658839327547)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1649048774059.png)]
-
包->类->方法
直接索引
字符类型
字符类型可以表示单个字符,字符类型是char,char是两个字节(可以放汉字),多个字符我们用字符串String
快捷键 Ctrl+Shift+D 复制光标所在行插入到下一行。
字符细节
1.字符常量是用单引号(‘ ’)括起来的单个字符.
2.java 中还允许使用转义字符 ‘\’ 来将其后的字符转变为特殊字符型常量。
3.在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。
4.可以直接给char赋值一个整数,然后输出时,会按照对应的unicode字符输出
5.char类型是可以进行运算的,相当于一个整数,因为它对应都unicode码
char c1 = 98; //b
//在java中,char的本质是一个整数,在输出时,是unicode码对应的字符
System.out.println("c1:" + c1);
char c2 = '\n';
char c3 = 'a';
char c5 = 'a';
char c4 = '张';
char c6 = 24352;
System.out.println("c2:" + c3);
System.out.println(c2);
System.out.println((int)c4);
System.out.println((int)c5);//输出’a'对应的数字
System.out.println(c6);
c1:b c2:a
24352 97 张
System.out.println('a' + 10); //107
char c7 = 'b' + 1 ;
System.out.println((int) c7);
System.out.println(c7);
99 c
字符类型本质探讨
1.字符型 储存到 计算机中,需要将字符对应的码值(整型)找出来,比如‘a’储存:’a’==>码值97
>二进制(1100001)>存储 读取:二进制(1100001)=>97 ===> ‘a’=>显示
2.字符和码值的对应关系是通过字符编码表决定的
字符编码
ASCII(ASCII编码表一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用128)
Unicode(Unicode 编码表 固定大小的编码表,使用两个字节来表示字符,子母和汉字统一都是占用两个字节,这样浪费空间)
utf-8 (编码表,大小可变的编码,字母使用1个字节,汉字使用3个字节)
gbk(可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节)
gb2312(可以表示汉字,gb2312<gbk)
big5 码(繁体中文,台湾,香港)
boolean布尔类型
public class Boolean01 {
public static void main(String[] args){
boolean isPass = true ;
if (isPass == true){
System.out.println("恭喜恭喜");
}else{
System.out.println("加油!");
}
}
}
恭喜恭喜
基本数据类型的转换
介绍
当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是*自动类型转换*。
数据类型按精度(容量)大小排序为
char->int->long->float->double
byte->short->int->long->float->double
int a = 'c'; //对的
double d = 80;//对的
自动类型转换注意和细节
1.多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的哪种数据类型,然后再进行计算。
2.当我们吧精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
3.(byte,short)和char之间不会相互自动转换。
4.byte,short,char 他们三者可以计算,在计算时首先转换为int类型。
5.Boolean 不参与转换
6.自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型
float d1 = 10 + 1.1; //错误 10+1.1结果类型为 double
float d1 = 10 + 1.1F; //对 结果为 float
byte b1 = 10 ;
byte b2 = 10 ;
char c1 = b1 ;// 错误,原因byte不能自动转成 char
short s1 = 1 ;
short s2 = b2 + s1 ;//错误,b2 + s1 => int
int s3 = b2 + s1 ; //对
byte b3 = b2 + b1 ; //不对
强制数据类型转化
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但可能造成精度降低或者溢出,格外要注意。
public class ForceConvert{
public static void main(String[] args){
int n1 = (int)1.9 ;
System.out.println("n1=" + n1);//造成精度损失
int n2 = 2000;
byte b1 = (byte)n2;
System.out.println("n2=" + b1);//造成数据溢出
}
}
n1=1 n2=-48
细节说明
1.当进行数据的大小从 大——>小,就需要使用到强制转换。
2.强转符号只针对于最近的炒作数有效,往往会使用小括号提升优先级
3.char类型可以保存int的常量值,但不能保存int的变量值,需要强制转换
4.byte和chort类型在进行运算时,当做int类型处理。
char c1 = 100;
int m = 100;
// char c2 = m; //错误
char c3 = (char)m;
System.out.println(c3);
d
short s = 12;
s -= 9; //对的
s = s - 9; //错 int—>short
System.out.println(s); //对 结果为3
byte b = 10;
b += 11;
b = b + 11; //错 int->byte
b = (byte)(b + 11);
System.out.println(b); //对 结果为32
char c = 'a';
int i = 16;
float d = .314F;
double result = c + i + d;
System.out.println(result); //对 结果为113.31400299072266
byte b1 = 16;
short s1 = 14;
// short t1 = s1 + b1; //错 不兼容的类型: 从int转换到short可能会有损失
System.out.println(t1);
基本数据类型和String类型的转换
基本类型转String类型
将基本类型的值 + “ ” 即可
public class StringToBasic{
public static void main(String[] args){
//基本数据类型->string
int n1 = 100;
float f1 = 1.1F;
double d1 = 4.5;
boolean b1 = true;
String s1 = n1 + "";
String s2 = f1 + "";
String s3 = d1 + "";
String s4 = b1 + "";
System.out.println(s1 + " " + s2 + " " + s3 + " " + s4);
}
}
100 1.1 4.5 true
String类型转基本数据类型
通过基本类型的包装类调用parseXX方法即可
String s5 = "123";
int num1 = Integer.parseInt(s5);
double num2 = Double.parseDouble(s5);
float num3 = Float.parseFloat(s5);
long num4 = Long.parseLong(s5);
byte num5 = Byte.parseByte(s5);
boolean b = Boolean.parseBoolean("true");
short num6 = Short.parseShort(s5);
System.out.println(num1+" "+num2+" "+num3+" "+num4+" "+num5+" "+b+" "+num6);
123 123.0 123.0 123 123 true 123
//怎么把字符串转成字符char -> 含义是指 把字符串的第一个字符得到
//解读 s5.charAt(0)得到s5字符串的第一个字符“1”
System.out.println(s5.charAt(0));
public class demo001{ public static void main(String[] args){ char a1 = '\n'; char a2 = '\t'; char a3 = '\r'; char a4 = '\\'; char a6 = '1'; char a7 = '2'; char a8 = '3'; System.out.println(a1 + " " +a2 + " " +a3 + " " +a4 + " " + a6 + " " + a7 + " " + a8); } } class demo002{ public static void main(String[] args){ String bookName = "雪山飞狐"; String bookName01 = "倚天屠龙记"; System.out.println(bookName + bookName01); char sex = '男'; char sex1 = '女'; System.out.println(sex + "" + sex1);//得到男女 System.out.println(sex + sex1);//得到 字符码值 + 字符码值 float rmb = 12.4F; float rmb1 = 43.2F; System.out.println(rmb + rmb1); // 得到 两数相加 } } class demo003{ public static void main(String[]