复习

Java语法入门

初始Java(JDK安装)

程序概念

  • 生活中的程序:流程、工作程序、入职程序、买票、上学....                                                    为了完成一件事、而进行的一系列的步骤。
    • 计算机中的程序:软件、应用、QQ、迅雷、京东、12306....                                          计算机中的程序、是一系列指令的集合。                                                                         为了满足计算机时代,人们对信息化的需要。

编程语言

  1. 机器语言:使用二进制(0,1)
  2. 汇编语言:使用一些关键词(add,...),提供了一个“翻译官”(编译器)帮助我们把一些指令转换为二进制
  3. 高级语言:语法方面更加偏向于自然语言,可读性非常强,也是有更强大的编器。                    C语言、 Python语言、 C#语言、C++语言、Java语言:不是太简单不是太困难。
  4. ....

Java语言

万金油

诞生

1995,SUM公司,詹姆斯·高斯林

发展

1998年:

  • J2 SE :桌面程序,它也是Java核心基础
  • J2 EE : 企业级Web程序
  • J2 ME : 移动端程序(被Android)

2009年:

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

2011年:

  • Java 7

2013年:

  •  Java8
    • 2019年1月1日,Java8后续维护更新,商业收费
  • 从Java9,更新频率改为半年已更新

短期支持版:Java9、Java10...,只维护半年

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

  • 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

编译和反编译

编译:将源代码翻译成字节码的过程

反编译:将字节码转换为源代码的过程。

使用jad工具实现反编译:jad-s java 字节码文件地址

IDE

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

Eclipse:适合前期,免费

变量和数据类型

程序运行原理

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

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

变量概述

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

变量定义

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

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

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

变量名:房间号

变量数据类型:房间类型

变量值:入住的客人

数据类型

8个基本数据类型

  • 数值类型

  • byte:126
  • short:12121
  • int :12131
  • long:  "long nm = 10L;"
  • float:  "float num = 10.1F"
  • double

非数值类型

  • boolean :true, flase
  • char:'a'

引用数据类型:

  • 数组
  • 类(String是一个类,“字符串”)
  • 接口
  • 枚举
  • ...

命名规范

最困难的

  • 由字母、数字、下划线、$组成、数字不能开头
  • 见名知意
    • 反例:a、b..
    • 正例:name、age.....
  • 驼峰命名法
    • 多个单词的情况下,区分多个单词
    • 小驼峰命名法:首字母小写,后面的每个单词首字母大写。stuName
  • 下划线连接法(蛇形命名法)
    • stu_name
  • 不能使用关键字和保留字
    • 关键字是语言中已经定义好的,用于表示特定含义的单词。
    • 反例:public
  • 不能把拼音和英文混合
    • 反例:没有XingMing

常量

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

final double PI = 3.14;

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

输入语句

java.util.Scanner

1.导包

        import java.util.Scanner,

        import java.util.Arraysl

        如果导入多个同一包下的内容,可以使用: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 : 条件表达式2;

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

数据类型转换

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

选择结构

if选择结构

  • 基础if选择结构
// 条件表达式通过关系运算符和逻辑运算符等构成
// true、false
if (条件表达式) {
    // 条件成立时执行的代码段
}
  • 互斥if选择结构
if (条件表达式) {
    // 条件成立时执行的代码段
} else {
    // 条件不成立时执行的代码段
}
  • 多重if选择结构
if (条件表达式1) {
    // 条件1成立时执行的代码段
} else if (条件表达式2) {
    // 条件2成立时执行的代码段
} else {
    // 当条件都不满足时执行的代码段
}
  • 嵌套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.多态

访问权限修饰符 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. 实现序列化接口

访问权限修饰符

修饰符/访问权限范围本类中同包不同类中不同包的子类中不同包的其他类
private
默认的(包级)
protected
public

包组织结构

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

package 包名; // 包声明

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

public class 类名 {

}

包名规范:域名倒序.项目名.xxx.分类

(一般小写)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值