复习(前面知识的总结)

Java语法入门

 初识Java(JDK安装)

 程序概念 

  • 生活中的程序:流程,工作程序、入职程序、买票、上学....

    为了完成一件事,而进行的一系列的步骤。

  • 计算机中的程序:软件,应用,QQ、迅雷、京东、12306....

    计算机中的程序,是一系列指令的集合。

    为了满足计算机时代,人们对信息化的需要。

编程语言 

  1. 机器语言:使用二进制(0、1)

  2. 汇编语言:使用一些关键词(add、...),提供了一个 “翻译官” (编译器)帮助我们把一些指令转换为二进制

  3. 高级语言:语法方面更加偏向于自然语言,可读性非常强,也是有更强大的编译器。

    C语言

    Python语言

    C#语言

    C++语言

    Java语言 :不是太简单不是太困难。

    ....

  4. ....

 Java语言

万金油。(指人或物在任何情况下都可起到作用,有“无所不能”“通吃”的意思。)

诞生

 1995年,SUN公司,詹姆斯·高斯林。

发展

1998年:

  • J2 SE:桌面程序,它也是Java核心基础

  • J2 EE:企业级 Web 程序

  • J2 ME:移动端程序(被 Android)

2009年:

  • SUN公司被Oracle,74亿美元贱卖

2011年:

  • Java 7

2013年:

  • Java 8

    • 2019年1月1日,Java 8 后续维护更新,商业收费

  • 大概从 Java 9,更新频率改为半年一更新

    短期支持版:Java 9、Java 10....,只维护半年

    长期支持版:哪怕已经进行了大版本更新,依然进行维护

    • Java 8

    • Java 11

    • Java 17(下半年)

 特点/特性

  • 简单易学 

                Java 拥有自动垃圾回收、内存分配。

                Java 去除了 C++ 之类的语言的指针,多继承等概念。

  • 健壮性
  • 安全性
  • 跨平台(一次编译,到处运行)
  • 多线程和网络编程
  • 分布式
  • 高性能 

搭建环境 

1.下载

2.安装

第一个Java程序 

 开发步骤

1.编写源程序(源代码、源文件)

        .java

 2.编译源程序

        javac.exe

        .class 字节码文件

3.运行程序

        java.exe

        JVM (Java虚拟机) 运行字节码文件

基本语法结构

// 类声明
public class 类名 {
    // 类体
    // main方法:程序运行入口
    // 方法声明
    public static void main(String[] args) {
        // 方法体
        // 指令
    }
}

 使用记事本开发

  1. 新建1个文本文档

    扩展名为 .txt,更改为 .java

    命名为:HelloWorld

  2. 打开文件,编写好 Java 基本语法结构

  3. 根据需要添加一些指令

    System.out.println("输出内容");

  4. 编译程序

    javac HelloWorld.java

  5. 运行程序

    java HelloWorld

 环境变量:path环境变量

  • DOS 系统中输入了一个程序名想要运行,首先它会从当前目录下找,找不到从 path 环境变量中挨个查找路径下是否有该程序,找得到就执行,找不到就报错。

输出语句

  • 输出并换行:System.out.println();

  • 输出不换行:System.out.print();

  • 格式化输出不换行:System.out.printf(格式化字符串, 格式化字符串参数列表)

    • %s:字符串

    • %d:整数

    • %f:浮点数

转义字符:

  • \n 换行

  • \t 一个制表位

 注释

给代码添加一些解释性的内容。

适度添加注释。

Java 中:

  • 单行注释:// 注释

  • 多行注释:/* 注释 */

  • 文档注释:javadoc注释,/** 注释内容 */

跨平台原理 

 核心:字节码文件、JVM

编译和反编译

... ... 

IDE

集成开发环境。集代码编辑、代码编译、代码调试等开发工具为一体的开发服务套。

Eclipse:适合前期,免费

 变量和数据类型

 程序运行原理

CPU 从硬盘上加载程序,加载到内存中。

程序运行是在内存中运行,在内存中操作数据。

变量概述

变量:可以变化的量/值。用语存储单一数据的方案。

变量定义

// 数据类型由变量值决定
// 声明并赋值
数据类型 变量名 = 变量值;

// 先声明
数据类型 变量名;
// 赋值
变量名 = 变量值;

联想,客人入住酒店,变量值入住内存。

变量名:房间号

变量数据类型:房间类型

变量值:入住的客人

数据类型

  • byte:126

  • short:12121

  • int :12131

  • long:

    long num = 10L;

  • float

    float num = 10.2F;

  • double

非数值类型 

  • boolean true、false

  • char:'a'


 引用数据类型:

  • 数组

  • 类(String是一个类,"字符串"

  • 接口

  • 枚举

  • ...

命名规范 

最困难的。

  • 由字母、数字、下划线、$组成,数字不能开头

  • 见名知义

    反例:a、b...

    正例:name、age...

  • 驼峰命名法

    多个单词的情况,区分多个单词。

    小驼峰命名法:首字母小写,后面的每个单词首字母大写。 stuName

  • 下划线连接法(蛇形命名法)

    stu_name

  • 不能使用关键字和保留字

    关键字是语言中已经定义好的,用于表示特定含义的单词。

    反例:public

  • 不能把拼音和英文混合

    反例:myXingMing

常量 

当需要一些不可以变化的值时,可以将其定义为常量。

final double PI = 3.14;

常量的命名,为了和变量区分,单词都大写,多个单词由下划线连接。

输入语句

java.util.Scanner

  1. 导包

    import java.util.Scanner;

    import java.util.Arrays;

    如果导入多个同一包下的内容,可以使用:import java.util.*;

  2. 创建对象

    Scanner 对象名 = new Scanner(System.in);

  3. 使用方法

    nextInt() : int 输入并得到整数

    nextDouble() : double 输入并得到浮点数

    next() : String 输入并得到字符串

常见运算符 

赋值运算符:=

算术运算符:+、-、*、/、%、++、--

  • 前++和后++的区别(--同理)
int num = 10;
System.out.println(num ++); // 10
System.out.println(num);  // 11
int num = 10; 
System.out.println(++ num); // 11   num = num + 1
System.out.println(num);  // 11
  • 数据类型不同,导致的计算影响

计算时,两个整数计算结果肯定是整数。其中有一个浮点数,结果按照数学运算计算。

int num = 10 / 4;
System.out.println(num); // 2

double num2 = 10 / 4;
System.out.println(num2); // 2.0

double num3 = 10.0 / 4;
System.out.println(num3); // 2.5

 复合赋值运算符:

  • +=

  • -=

  • /=

  • *=

  • %=

关系运算符:(运算结果是 boolean)  

  • >

  • <

  • >=

  • <=

  • ==

        == 比较基本数据类型,比较内容。

        == 比较引用数据类型,比较地址值。

是因为基本类型和引用类型,在栈中存储的数据不一致。

引用数据类型要比较内容,需要使用 equals()方法,并且要重写该方法。

  • !=

 逻辑运算符:(运算结果是 boolean)

  • && 与、并且

  • || 或,或者

  • ! 取反

 两个 && 和 1个 & 区别:短路。

三元运算符:条件表达式 ? 表达式1 : 表达式2;

  • 三元运算符的计算结果由表达式1和表达式2决定。

数据类型转换 

  •  自动类型转换
  • 强制类型转换

选择结构 

if 选择结构

  • 基础if选择结构

  • 互斥if选择结构

  • 多重if选择结构

  • 嵌套if选择结构

 switch 选择结构

switch (表达式) {
    case 常量1:
        break;
    default:
        break;
}

switch 和 多重 if 区别:switch 只能用于等值判断,多重 if 可以用于范围判断。

switch 的case穿透性:确实 break,会向下继续穿透知道遇到break或结束。

switch 表达式支持类型:int(byte、short、char)、String、枚举

随机数

 Math:

  • random() : double [0.0, 1.0)

  • 推导生成任意范围的随机整数:(int) (Math.random() * (max - min)) + min

 循环结构

while循环

while (循环条件) {
    // 循环操作
}

 do-while循环

do {
    // 循环操作
} while (循环条件);

 for循环

for (循环变量; 循环条件; 循环出口) {
    // 循环操作
}

 三者区别

 while 和 for 都是先判断在执行。

do-while 是限制性在判断,无论是否条件成立,都至少会执行一次。

for 循环适合于固定次数的循环。

双重循环

 循环嵌套另一个循环。

外层循环执行一次,内层循环执行一遍。

流程控制:

  • break:结束循环

  • continue:结束本次循环,继续下一次循环

  • return:结束方法

数组 

 数组概述

数组,它是一种用于存储一组相同数据类型数据的数据结构(线性数据结构)。

会开辟一个连续的内存空间。

数组的定义

数据类型[] 数组名 = new 数据类型[元素个数];
数据类型[] 数组名 = {元素值1, 元素值2, ...};
数据类型[] 数组名 = new 数据类型[]{元素值1, 元素值2, ...};

数组的动态赋值

 数组名[下标] = 元素值;

for (int i = 0; i < 数组名.length; i++) {
    数组名[i] = 输入的值;
}

数组的遍历

 遍历:把数组中的数据挨个取出来。

1.循环下标,便利数组

for (int i = 0; i < 数组名.length; i++) {
    数组名[i]
}

 2.增强for

for (数据类型 变量名 : 数组名) {
    变量名
}

数组默认值

 元素空间有默认值。

基本类型:

  • 整数:0

  • 浮点数:0.0

  • boolean:false

  • char:\u0000

 引用类型:

  • null

 二维数组:

 一个存储一堆数组的数组。(嵌套数组)

Arrays工具类

操作数组的工具方法。

  • toString(数组) : String

  • equals(数组1, 数组2) : boolean 比较数组内容

  • sort(数组) : void 升序排序

  • copyOf(数组, 新的长度) : 新数组

  • ...

 排序算法

  •  冒泡排序

        比较原理:相邻元素作比较,两两比较小靠前。

        外层循环:n-1,内层循环:n-1-i

  • 选择排序

  • 插入排序

  • 归并排序

  • 希尔排序

  • ...

 吃货联盟项目

  • 多个数组实现一个完整数据的存储(相同下标数组的空间存储数据,代表同一条)
  • 数组删除数据(默认值,数组元素移位)

 Java面向对象

 类和对象

面向对象概念

 它是计算机奇数演化的必然产物。

它将宣誓生活中的内容在计算机中进行建模。

它是基于面向过程来的。


面向过程:解决问题,面向实现的每一个过程/步骤。

面向对象:解决问题,面向能够解决具体问题的对象。

类和对象关系

 1.万物皆对象

 2.分析对象的特征、行为

3.分析类

类是对象的抽象,是一个模板。

对象是类的具体实例/个体。

类和对象定义 

 Java 是面向对象的编程语言,它是以类为基本组成单元。

面向对象三大特性:1.封装2.继承3.多态(4.抽象)

访问权限修饰符 class 类名 {
    // 属性
    访问权限修饰符 数据类型 属性名;
    
    // 方法
    // ...
}
类名 对象名 = new 类名();
对象名.属性名 = 属性值;
对象名.方法名(参数);

方法概述

变量用来存储数据。

方法用来存储代码段/功能。

当你需要定义一个可能重复使用的功能时,就将这段内容抽取到方法中。

// 方法声明
[访问权限修饰符] [特殊修饰符] 返回值类型 方法名(数据类型 参数名, ...) {
    // 方法体
    [return 返回值];
}

 方法和方法重载

 带参方法

 方法分为四类:

  • 无参无返
  • 无参有返
  • 有参无返
  • 有参有返 

定义一个生成4位随机整数的方法,调用该方法可以得到一个4为整数。

public int random() {
    return ....;
}

基本类型参数:传递的是值

引用数据类型参数:传递的是地址值

构造方法

创建对象时采用的。

系统默认提供一个无参构造方法,但是只要你定义了一个构造,就不再给提供了(建议自己写出来无参构造)。

访问权限修饰符 类名(数据类型 形参名) {
    
}

带参构造和无参构造。

可以利用带参构造快速赋值属性。

this关键词

 this关键字:当前类的对象,代词

  • this.属性
  • this.方法(参数)
  • this(参数) 调用构造

 成员变量和局部变量区别

  • 定义位置不同

        成员变量定义在类中方法外

        局部变量定义在类中方法中

  • 作用域不同

        成员变量作用域是整个类

        局部变量只能在定义它的方法中使用

  • 默认值不同

        成员变量有默认值(和数组一样)

        局部变量没有默认值,不赋初始值无法使用

  • 生命周期不同

        成员变量(实例变量)是随着对象的产生而产生,随着对象的销毁而销毁

        局部变量随着方法的压栈而产生,随着方法的弹栈和销毁

方法重载

 在一个类中,多个方法的方法名相同,但参数列表不同(类型、个数、顺序),可以构成方法承载。

相同功能,处理不同类型的数据。

封装

 面向对象的第一个特性。

封装概述

 将类的信息尽可能多的隐藏在类的内部,然后向外界提供公共的操作和访问方法。

可以有效提升程序的安全性、健壮性、可维护性。

封装的使用

 1.属性私有化

2.提供公共的 getter(访问)/setter(操作)方法

3.根据需要在 getter/setter 中添加合适的逻辑处理

一般JavaBean规范

 1.属性私有化

2.提供公共的 getter(访问)/setter(操作)方法

3.提供无参构造

4.实现序列化接口

访问权限修饰符

修饰符/访问权限范围本类中同包不同类中不同包的子类中不同包的其他类
privatefire
默认的(包级)firefire
protectedfirefirefire
publicfirefirefirefire

包组织结构

 包:Java 类可以分门别类的存储。

package 包名; // 包声明

// 导包
import 包名.类名; // 全类名/全限定名

public class 类名 {
    
}

包名规范:域名倒序.项目名.XXX.分类(一般建议小写)

继承和方法重写

多态

汽车租赁项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值