java高价进阶架构
-------java概述-----------------------------------------------------------------------------------------
1.Java 语言概述
jdk=java development kit 1.0---jdk14
2.java语言平台版本
J2SE:桌面程序
J2ME:嵌入式设备程序
J2EE:servlet,jsp开发web程序
3.java语言特点:
简单,解释性,面向对象,高性能,分布式处理,多线程,安全性,开源,
跨平台(.class 安装java jvm 虚拟机);
安装java jvm 虚拟机==JRE
安装win jvm 虚拟机
安装mac jvm 虚拟机
JRE(JAVA Runtime ev java 运行环境):包含Java虚拟机和java程序所需的核心类库等
JDK:JAVA开发工具包:包含JRE和开发工具(编译工具javac.exe,打包工具jar.exe)等
4.JDK,JRE,JVM三者关系:
4.1 JKD开发工具包 ---------------------JAVA编写的开发工具包,是面向开发人员的提供API帮助开发功能
4.2 JRE运行环境----------------------JAVA程序运行环境,有就JRE就可以运行程序不需要JDK
4.3 JVM虚拟机----------------------JVM运行字节码文件.class代码,将代码翻译给对应的操作系统执行实现跨平台的代码
4.4 OS操作系统--------------------运行JVM翻译之后的代码
5.为什么要学java
- 23年独立开发的历史
- 83次荣获ITOBE排行榜第一
- 90%的服务器使用Java
- 45.5%的开源项目使用Java
- Java语言易学易用还跨平台
- Java市场需求大,就业岗位多,岗位薪资水平高
6. 环境安装
https://www.oracle.com/index.html
https://developer.oracle.com/ Java Se Development kit 14
-----变量定义语言规范------------------------------------------------------------------
1.数据类型:
基本数据类型:
四种整型:
byte:8位=一个字节= - 2~7
short:16
int :32
long:64
二种浮点型:
float 4字节
double 8字节
字符型:char 2字节
布尔型:boolean 不能确定
原始数据类型:8大基本数据类型+void
2.变量定义:定义语法:数据类型,变量名称=变量的值, double price=45.3
变量名定义规则:变量名不能包含 & _;不能以数字开头,变量要有意义,变量以小写字母开头,不用中文命名;
3.变量运算:
四则运行:+,-,*,%
比较运算:>, < ,>=,<=,==, !=
逻辑运算: &&,|| ,!
位运算:<<,>>,<<<,&,|~,
4.变量转换:
自动转换
强制转换
byte b=120;
shor st=320;
int age=30;
long height=3000;
float price=3.2f;
double price2=34.3
char ch='a';
boolean flag=true;
int a=3;
System.out.println(a++);//3 递增,递减【递增在前,先计算后输出,递增在后,先输出,在计算】
System.out.println(++a); //5
shor s1=1;
shor s2=s1+1;
shor s2=(short)(s1+1);
s2+=1;//s2=s2+1;//不能提示结果类型;
5.流程控制:
if else;
switch case; switch(变量) { case 变量值1 语句;bread;case 2 语句;bread;default;}//语句接收的类型是:整型,字符型,字符穿类型(JDK1.7)
for:for(int i=1;i<10;i++){System.out.println("a"); a++;}
while, while(a<10) {System.out.println("a"); a++;}
do--while, do{ System.out.println("a"); a++;}while(a<10);
a>b?a:b
6.跳转语句:
continue:跳出当次循环
break:退出当前循环体,外层循环继续执行
return: 退出当前方法体程序
7.数组:存储相同类型的一组值
int[] a=new int[5]; a[0];a.lenght;
int[] nubmers=new int[4];
int[] nums=new int[]{1,2,3,4};
int[] ages={1,2,3};
int[][] table= new int[3][3];
int[][] tables={{1,2,3},{2,3,4},{2,2}};
8. 数组分配的内存空间
栈区:局部变量 int ages[] =oxff110 内存地址;程序计数器;
堆区:存储对象 new int[4]; ages[0]=oxff110 内存地址
9.IDEA IDE 工具的使用
IDEA 2020.1.3
https://www.jetbrains.com/idea/download/#section=windows Ultimate
psvm //快捷生成main方法
numbs.fori //快捷生成for循环
numbs.for //快捷生成foreach循环
sout // 快捷生成System.out.println();
变量名称.sout//快捷生成System.out.println(b.name);
new 对象().var //快捷补全变量名称 B b=new B();
alt + insert //快捷生成setter,getter属性
ctrl +d // 向下复制快捷键
ctrl +alt + m //提取方法
-------OOP---------------------------------------------------
1.面向过程:自己是参与者;
2.面向对象:自己是领导者,做事之前都想有没有什么人能帮助我完成(那些对象)
2.1找对象:大象,冰箱,人
2.2给对象定功能:
冰箱:开门,关门,装大象
人:打开冰箱们,关闭冰箱门,把大象放进冰箱
大象:属性,
2.3 找对象帮我完成功能(依赖关系):
3.对象和类的关系
类是对象模板,对象是类实例
类:物以类聚,具有相同特征和行为的一类事物的抽象;
对象通过new关键字创建
4.面向对象的特征
封装:隐藏类实现的细节,提高代码复用性
支付:
类的属性私有化:提供需要给外部访问和设置的权限,属性对应setter,getter方法组;
提供外部调用方法接口;
setter 现有属性的合法性
继承:
子类继承父类的非私有的全部方法,属性;继承了不可见
extends 关键字来完成继承;
覆写:重写:子类中定义了和父类中一样的属性和方法,则调用的是子类的属性和方法
用父类引用了子类的方法,调用的还是子类的方法;
supper.hello()
supper();//调用父类的构造函数
那些方法和类不能被继承:
static final 方法不能被继承=密封类
final修改的方法不能重写;
一个类只能继承一个类:单继承
具体类继承抽象类,必须实现方法;override
抽象类继承抽象类,不用实现抽象方法;
多态:
重写:子类重写父类的方法;
重载:在用一个类中存在不同参数列表(参数类型,参数个数,参数顺序)的方法;
与方法的返回值无关,与方法的参数名称无关
5.抽象类:abstact 关键字修饰,具有某种对象的特征,但不完整;
抽象方法必须是抽象类,抽象类不能实例化
抽象类里,可以有具体的方法;
6.接口:约定,能力,implements
定义在接口中的方法都是公共的抽象的;
接口中不能有具体的实现方法,jdk8之后可以有具体的方法;default void hello(){println("");}
在接口中定义的属性都是常量;public static final String name="a";
7.集合:
Float.class
collection
list:元素可以重复,保证顺序性
arrayList.asList()
LinkedList
list.add()
set接口特点:元素不能重复,不保证顺序
hashset
treeset.get(1);
hasmap.put("key","value");
hasmap.keyset();
hasmap.values();
masmap.get(11);
Set keyset=hasmap.keyset()
Collections.reverse(list).
Collections.shuffle(list);
Collections.println(list);
8.JDBC
8.1.下载驱动
8.2 加载驱动
8.3 根据驱动对象获取链接数据库的对象connection
8.4 根据connection对象创建编译对象statement
8.5根据Statement对象设置执行的sql语句和参数
8.6使用statement对象执行sql语句并处理返回结果;
private static void genericMethod1() {
try {
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 通过驱动管理类DriverManager获取连接对象
String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=GMT%2B8";
Connection connection = DriverManager.getConnection(url, "root", "123");
String sql = "select * from t_user where user_name like ? and user_gender=?";
// 创建编译对象
PreparedStatement pst = connection.prepareStatement(sql);
// 设置参数
pst.setString(1, "%han%");
pst.setString(2, "女");
// 执行SQL语句并处理返回结果
ResultSet resultSet = pst.executeQuery();
// 把获取结果输出到控制台
while (resultSet.next()) {
System.out.println(resultSet.getString("user_name")+","
+resultSet.getString("user_gender"));
}
// 释放操作资源
resultSet.close();
pst.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void genericMethod() {
try {
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 通过驱动管理类DriverManager获取连接对象
String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=GMT%2B8";
Connection connection = DriverManager.getConnection(url, "root", "123");
// 创建编译对象
Statement statement = connection.createStatement();
String name = "han";
// String sql = "select * from t_user where user_name like '%"+name+"%'";
// SQL注入问题
String sql = String.format("select * from t_user where user_name like '%s' and user_gender=%s","%hanmei%' -- ","女");
// 执行SQL语句并处理返回结果
ResultSet resultSet = statement.executeQuery(sql);
// 把获取结果输出到控制台
while (resultSet.next()) {
System.out.println(resultSet.getString("user_name")+","
+resultSet.getString("user_gender"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
-------------------- idea 安装及简单介绍和简单项目部署---------------
下载:idea https://www.jetbrains.com/idea/download/download-thanks.html?platform=windows
下载:jdk1.8
配置tomcat
创建javaweb项目
file--new project--empty project //创建解决方案
file -new module
发布:add config
-------------------Javeweb-tomcat---------------------------------
1.web服务器: tomacat:
静态服务器:nginx(只能发布.html页面访问
动态服务器:apache tomat,jetty,weblogic,自带动态页面编译位静态页面;
2.下载tomcat服务器:https://tomcat.apache.org
https://tomcat.apache.org/download-80.cgi 8.5
3.直接解压
4.验证tomacat是否可用:C:java_05_lessonapache-tomcat-8.5.70instartup.bat
http://localhost:8080
----------------javeweb - servlet------------------------------------
servlet:运行在服务端的java应用程序 =iis/tomcat
定义:在创建web项目中引用tomcat里面提供的servlet-api.jar类库;
创建一个servlet
public class MyServlet extends HttpServlet{
}
serlet生命周期:
实例化--初始化(init()--调用分发请求service---destroy销毁
jsp
el表达式
Filter
listener
mvc
java面试题:
16773/00085814
1.四种整型:
byte:8位=一个字节= - 2~7
short:16
int :32
long:64
2. int a=1;
System.out.println(a++);
System.out.println(++a);
3.接口可以被实例化吗? 不能,没有构造函数,接口可以多实现,接口和接口间可以继承,接口和类之间只能实现,不能继承;
Java基础
https://ke.qq.com/course/2770403?taid=9894973292561891&tuin=65d16efb