java知识点复习

一、Java运行原理

1.  开发环境

Jdk:Java开发工具包---》Java:sun公司,被Oracle所收购

最新版本

 

JDK1.8以上的版本,是不需要配置环境变量(Java_home,classpath,path)

2.  Java特点

  • 跨平台:window,linux
  • 健壮性:一套处理异常机制的体系
  • 面向对象:对象与对象之间的关系(C语言:面向过程)

Java是编译型语言,Java文件---》.class--->执行

Python:解释型语言

3.  Java开发工具

.Jar文件封装的N个class文件

 

Java project --》package---》Java文件

//放在首行的是package关键字,管理java文件

package com.hyg.ch01;

import java.util.Date;

//如果需要导入其他包下的类,import(java.lang是语言包,默认导入)

//public:公有权限,class是类的关键字,HelloWorld是类名,建议类名首字母大写

/**

 *

 * @author Administrator

 *

 */

public class HelloWorld {

    /*

     * 入口方法main(alt+/) static:静态,void:没有返回值,参数:字符串数组

     */

 

    public static void main(String[] args) {

        System.out.print("欢迎");// 控制台打印后换行

        System.out.println("Java");// 控制台打印后换行

        System.out.println("Java");// 控制台打印后换行

        Date now = new Date();//演示import关键字

        System.out.println(now);

    }

 

}

 

 

二、Java基础

2.1标识符

  Main:正确,标识符区分大小写,main方法是小写

  1ch01:错误,标识符不能以数字开头

  Hello World:错误,只能包含_,$,其余的符号都不可以

 常见的关键字:

  static(静态修饰符)

   访问修饰符:public   private   protected

   native ,final(最终的),main ,void(没有返回值),return ,break,continue;

2.2分隔符:

有意义的分隔符和无意义的分隔符

2.3常量

  final关键字 ,值不会被改变,常量名建议大写

final double PI=3.1415;

2.4变量

数据类型 变量名;

要求:想使用变量,必须进行初始化

① int a =5;

② int b; b=3;

2.5 数据类型

        两类:8个基本数据类型和引用类型

 

   char: 字符型,用单引号存储,只能放一个汉字或者一个字母或者一个数字

   String:字符串,引用类型,有地址空间,用双引号存储

//整数

        int i =1558;

        long j = 155889988888L;//长整型:数字后面加L

        short s = 48;

        byte b = 5;

        //浮点数

        float f = 1.23f;//后面必须指定f

        double d = 1.2348911;//后面可以不指定d

        double d1 = 1.23489d;//后面可以指定d

        //字符:占两个字节

        char c = 'a';

        char c2 = '1';

        //char c3 = "a";//错误的原因:char不能转换为String

        char c1='中';//1个字符是两个字节,汉字可以用Unicode存储,一个汉字也是占两个字节

        String string= "中";//引用类型,一般使用字符串进行存储汉字

        //System.out.println(c1);

        //布尔类型

        boolean b1 = true;//true 或者false

引用类型:类,数组,接口(模拟多继承),枚举,注解,字符串

2.6作用域

 全局变量:应用于整个类

局部变量:某个方法或者程序块

2.7运算符

6个类

①算术运算符:/   %    a++    ++a

②比较运算符:得到的结果true或者false,判断两个变量是否相等==,不相等 !=

③逻辑运算符:非、与&&、或||

④位运算符:二进制

⑤赋值运算符:=是指赋值,a+=b等价于a=a+b

⑥三元运算符(条件运算符)(表达式)? 成立的结果:不成立的结果

2.8分支语句

  1. if-else

①只有一个分支

 if(表达式){}

②两个分支

If(表达式){

}else{

}

③两个分支以上

If(){

}else if(表达式){

}else{

}

  1. switch .....case

   Switch(表达式){

Case 1:

语句;

Break;

Case 2:

语句;

Break;

。。。。

Default:

语句;

Break;

}

 

 

2.9迭代语句

  1. While

   While(条件){

}

  1. do....while

   先执行语句,再判断条件

   do{

}while(条件)

※语句会至少执行一次。

  1. For

   ①知道循环次数

  For(初始值;条件;迭代){

}

②增强for:不需要知道循环次数

  场合:集合或者数组

For(数据类型 临时变量:遍历的数组或者集合){

}

2.10 转移语句

Break:终止当前循环

Continue:结束本次循环,循环会继续

Return:用于方法的返回值,之后的语句不再执行

2.11数组

一维数组: 举例 int a[]

       特点:引用类型,存放同种数据类型的数据,地址连续

           索引:0~数组.length-1

获取某个元素:数组名【索引】

初始化:静态初始化 int a[]={};

                   Int a[]=new int[]{};//不指定长度

        动态初始化:开辟空间,设定数组的长度

                   Int a[]=new int[数组的长度];

 二维数组: a[][]

         必须指定一维数组的长度

2.12常见的工具类

 Scanner 类:控制台输入类

     接收整数:nextInt();

接收字符串:nextLine()与next()

Random:获取随机数

  NextInt(100)====》【0,100

Math

2.13冒泡排序

原理:两两比较,进行交换

   6   3  8   2  9  1

0 第一趟:  3    6   2   8   1   9   

 1第二趟:  3    2   6   1   8   9 89没必要再比较)少比较1

第三趟:  2   3   1   6  8   9 (少比较2次)

  第四趟:  2   1   3   6  8   9  (少比较3次)

  第五趟:  1   2  3   6  8   9

 规律:比较6个数,最多5次能完成排序

2.14 字符串

 

 

 

三、面向对象

面向对象的思想:

对待问题,考虑这个问题包含多少对象,对象与对象之间的关系是什么。每一个对象需要完成的动作是什么?

面向过程思想:讲究过程处理,所有的动作必须按照步骤来执行,①--》②--③

举例:①手工榨橙汁:超市买橙子——》手工剥皮--》榨汁机---》新鲜的橙汁

       过程处理:必须完成第一步,才能执行第2步======》面向过程

      ②自动榨橙汁:用户投硬币--》新鲜橙汁

        两个对象之间的关系:用户,自动榨汁机

        动作:用户投硬币

              机器给用户生成一杯新鲜的橙汁

把大象装进冰箱分几步

 

3.1三大特性

  封装、继承、多态

3.2类与对象

   类:一个模板,对象是类的具体实例

 

 

 

1.类:属性与方法

属性:成员变量---》类的特征

方法:具体行为

引用类型

2.对象

①Rectangle rect1 = new Rectangle();

②Rectangle rect2;

rect2 = new Rectangle();

③Rectangle rect3 = null;//null是指没有引用地址

rect3 = new Rectangle();

3.构造方法

 ① 特殊的方法:方法名与类名相同

②没有返回类型

③ 初始化类的内部状态

④ 每一个类都有一个默认的无参构造方法,一旦定义其他构造方法,无参将被覆盖。如需使用,重新新建一个无参构造方法

  1. this关键字:代表当前类,为了解决命名冲突问题
  2. 方法

  方法的声明与实现({})两部分组成。

  先创建对象---》对象名.方法名

  1. 参数传递

  ①值传递:参数类型是基本数据类型,不会改变参数的结果

 

 ②引用传递:参数类型是引用类型,最终会改变结果值

 

 

  

 

 

 

 

 

特殊:字符串传递是值传递

String str=“abc”;

String str1=“abc”;

Str == str1//比较的地址-----》true

Str.equals(str1);//字符串的内容-----》true

3.3重载

同一类:方法名相同,参数(个数,类型,顺序)不同===》重载:overLoad

注:返回类型不影响重载

重载是同一类中多态的体现

3.4访问修饰符

 

 

3.5 static

之前讲的内容:实例相关

 
 

类 Class1{

  int a;

  public  void print(){

}

 

}

 

 

 

实例相关

 

先创建对象(obj是对象名,也是实例名)

Class1 obj = new Class1();

//调用属性

obj.a;

//调用方法

obj.print()

 

 

 

 

 

 

 

 

 

 

 

 

 

通过在属性和方法前加static修饰符-------》类相关

 

                       
   

//调用静态属性b

Class2(类名).b;

//调用静态方法

Class2(类名).print;

 
 

类 Class2{

//静态属性

static int b;

//静态方法

public  static void print()

{}

}

 

 

 

}

}

 
     
 
 
 
   

类    Int  a =0;

     Static int b=0

构造器{

 a++;b++;

}

 

 
 
         
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四:类之间的关系

4.1继承

extends 单继承

 

  子类:可以使用父类的属性和方法

  构造方法执行顺序:父类---》子类

 

4.2 重写Override

定义:父类中的方法无法满足子类的要求,子类对这些方法进行改造。

 

注:可以采用快捷方式:自动生成注解,对方法体进行改造

手动:匹配重写规则

1. 方法签名与父类一致

2. 重写的方法的返回值必须和被重写的方法的返回一致或者是其子类

3. 重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;

4. 私有方法不能被重写

5. 访问权要不一致,要不变的更公开

区别:

重载

重写

同一类中多态的体现

不同类中多态的体现

定义:同一类中,方法名相同,参数个数、类型、顺序不同

定义:父类中方法,不能满足子类的要求。子类对此方法进行改造。

※:方法名相同,参数个数、顺序、类型也是必须是一样

返回类型不影响重载

重写方法的返回类型与父类一致或者是其子类

 

父类中方法需要抛出异常,子类必定抛异常

。。。。。。。。。。

 

同一类:方法名相同,参数(个数,类型,顺序)不同===》重载:overLoad

注:返回类型不影响重载

重载是同一类中多态的体现

 

 

多态:有继承有关系的类

      重写

      向上转型   父类引用---》子类

4.3 Object类

 Equals与===

  1. ==一般比较基本数据类型或者引用地址
  2. Equals比较对象里面的内容是否一致

Clone:生成副本

toString():类信息@哈希码

五、抽象类、接口

5.1抽象类

模板设计

关键字:abstract ,可以修饰类,也可以修饰方法

 

抽象类:可以包含抽象方法,也可以包含已经实现的方法

抽象类的子类依然可以是抽象类

实现类 extends 抽象类

抽象类不能分配具体的空间,也就是不能直接实例化

抽象类 实例名===new 具体的实现类();

模拟的多态

5.2接口

模拟多继承

行为规范  关键字interface   类implements接口1,接口2

接口:①常量 public static final 数据类型 常量名=初始化

 ②n个方法的声明(默认是抽象方法)

接口 实例名=new 具体的实现类();

 

N个类  同一行为---》接口(大部分)

N个类  同一模板 ---》抽象类

 

5.3其他

内部类:类中定义

同级类:公有类是并列关系

一个Java文件中可能包含N个类,但是只有一个公有类

 

六、异常

理论:Error:错误(内存溢出,栈异常)

      Exception:

编程:检查型异常:编译器会自动提示异常

      非检查异常:RuntimeException,编译器不会检查

Try{

有可能发生异常的代码

}catch(异常对象){

}finally{

  最后总要执行的点

}

Throws:声明异常,方法名后面使用

 Throw:方法体内,手动抛出异常

 

七、集合

7.1 List集合

 特点:有序,元素可以重复

   常用的实现类:ArrayList :适合做查询

                 LinkedList:  适合做修改

导入的包:Java.util

 

 

7.2Set集合

特点:无序,元素不可以重复

常见的实现类:HashSet

              TreeSet(默认升序)

遍历只能用增强for

导入的包:Java.util

 

7.3Map集合

维护键值对,key必须唯一,可以为null,但是value可以重复

常见的实现类:HashMap

              TreeMap(默认升序)

Map存放或者修改元素:Put(key,value)

7.4迭代器

八、JDBC

准备工作:1.数据库hygdb,表t_user

2.mysql-connector-java-5.1.18-bin.jar  驱动包

  1. 先创建一个Java工程 JavaSE_JDBC

 

 

1.java链接数据库6个步骤

PreparedStatement

PreparedStatement:SQL传递参数选用这个

优势:防止SQL注入;预编译SQL语句,执行效率快;可操作性强;

 

 

 

 

 

九、Servlet

所有servlet继承父类HttpServlet,servlet2.5版本后,自动生成注解的方式

9.1 生命周期

初始化(1次)init------》运行期(N次)service-------》销毁期(1次)destory

9.2 访问servlet两种方式

1.注解

2.配置文件

 

 

9.3登录功能

需求:1.用户名和密码正确,登录---》首页

  1. 用户名和密码不匹配,登录返回错误信息

 

实现过程:

先通过页面级别的JS验证----》servlet----》dao---》db

时序图:

代码逻辑架构

 

 

 

 

  1. 执行js验证

   按钮添加了单击事件(onclick)-----》checkData()

 <input type="button" value="登录" onClick="checkData()"/>

 <script>内加js函数

function checkData(){

       alert("执行脚本");

       //获取文本输入的内容,通过Id

       var userId = document.getElementById("userId").value;

       alert("userId="+userId);

       if(userId == "" || userId == null || userId==undefined){

          alert("用户名不能为空");

          return;

       }

       //获取密码的值

       var pwdId = document.getElementById("pwdId").value;

       if(pwdId == "" || pwdId == null || pwdId==undefined){

          alert("密码不能为空");

          return;

       }

       document.forms[0].submit();

   }

 

  1. Jsp 中form表单注意事项

  提交方式:post

  文本框加name属性

  1. Servlet

   接收jsp传递的数据 request.getParammeter(“name属性”)

   去dao层验证用户名和密码是否存在

   成功:请求转发到首页

   失败:登录显示错误信息,用EL表达式

 

9.4 列表功能

 点击Index.jsp 菜单-----》servlet---》list.jsp

List.jsp 遍历集合的数据,需要加jstl.jar

 

  1. 加taglib指令

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

posted @ 2021-03-30 21:34  贪睡地蜗牛  阅读(43)  评论(0编辑  收藏  举报