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); // 2double num2 = 10 / 4;
System.out.println(num2); // 2.0double 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.实现序列化接口

访问权限修饰符

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

包组织结构

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

package 包名; // 包声明// 导包
import 包名.类名; // 全类名/全限定名public class 类名 {}

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

继承和方法重写

多态

汽车租赁项目

复习(前面知识的总结)相关推荐

  1. C语言程序设计期末复习重点知识,C语言程序设计期末总复习.ppt

    <C语言程序设计期末总复习.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计期末总复习.ppt(11页珍藏版)>请在人人文库网上搜索. 1.天津理工大学-华信软件学院, ...

  2. 运维开发必备技能!陪你分阶段巩固复习前端知识,攻破前端技能防线。

    写在开篇 先探讨一个问题:运维开发工程师是什么?所谓的运维.所谓的开发,到底怎么理解?到底是运维还是开发?笔者是不是可以这样去理解:只要开发跟运维领域相关的脚本.工具.产品,那么也都可以说是运维开发? ...

  3. 计算机概论复习:知识大全

    为期末考试复习的笔记,参考了各种资料. 1.计算机的定义 1.1计算机系统的组成 1.由硬件和软件组成: 2.软件: 应用软件--办公自动化软件.财务管理软件.(记法:有专门应用语境的软件) 系统软件 ...

  4. 汇编8086复习——基础知识、指令汇总、上机实验踩坑

    8086处理器基础知识 汇编语言是大小写不敏感的低级语言,意思就是mov和MOV是汇编语言来说是一样的,当然大小写混用也是可以的,如Mov 在8086汇编语言里,数字默认是十进制的,如果是其他进制数字 ...

  5. 数字逻辑 | 期末复习 · 基本知识

    第一章 基本知识 一.数字信号与数字系统 1. 数字信号 人们习惯将连续量称为模拟量,表示模拟量的信号称作连续信号. 若信号的变化在时间上和数值上都是离散的,或者说断续的,则称为离散信号. 离散信号的 ...

  6. 软件工程复习重点知识

    第一章.软件工程概述 主要复习: 软件工程和软件工程方法学基本概念 生命周期法及各部分组成内容 典型软件模型: 1.软件工程 2.软件工程方法学 3.软件生命周期 各个阶段的基本任务 4.典型软件模型 ...

  7. Python基础复习---重点知识笔记(一)

    该篇文章是针对自己在学习python基础知识的时候,对于不易理解或者重点需要掌握知识的总结性概括.后续遇到的问题会不断加入进来! 文章目录 一.函数 1.1 局部作用域不能使用其他局部作用域内的变量 ...

  8. ES6 复习,知识补充

    ES6 知识补充 概念 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了. 它的目标,是使得 JavaScript 语 ...

  9. 数据库系统概论期末复习以及知识整理

    1.数据库的三级模式与二级映射: 三级模式:模式.内模式.外模式 二级映射:外模式--模式 映射(保证了数据的逻辑独立性) 模式--内模式 映射(保证了数据的物理独立性). 2.数据库的特点:①数据结 ...

  10. Python复习 基础知识

    动态语言:变量类型不固定称之为动态语言 什么是动态语言呢? 可以简单的理解为直接被解释执行的语言称为动态语言. 而需要编译环境将程序转换为其它的编码再执行的语言称为静态语言. 当前静态语言有:java ...

最新文章

  1. PyTorch训练加速17种技巧
  2. centos memcached php,centos系统为php安装memcached扩展步骤
  3. Map存值问题的研究
  4. 深圳惠程澄清与奇虎360公司重组传闻
  5. iOS GPUImage之滤镜功能说明
  6. android r中的变量_R中的变量
  7. mysql和timescale联合查询_[技术干货] 时序数据库timescaleDB安装
  8. 如何给ppt编辑页码_PPT中怎样设置页码
  9. 数字孪生智慧监狱三维可视化系统建设方案
  10. 放映机服务器型号,巴可Barco SP4K-20CS4激光系列智能影院放映机投影机
  11. 深度残差网络+自适应参数化ReLU激活函数(调参记录2)
  12. Google Chrome自定义新标签页
  13. iOS App Store 审核 other 处理、解决办法 The review of your app is taking longer than expected
  14. 巨帧(jumbo frame)
  15. IOS-APP自动化打包上传蒲公英Shell版
  16. 基于BS架构考试系统的设计与分析
  17. iphone游戏-钢铁侠2 Iron Man评测
  18. 自定义带取景框的camera
  19. java登录无线路由器_无线路由器设置不求人,不会的赶紧收藏
  20. 蒙泰 TPF 文件恢复

热门文章

  1. 个推推送项目实用(二)
  2. vue基础v-moder修饰符( number, trim, lazy )
  3. 基于SpringCloud微服务车辆管理系统
  4. 【CSS】transition图片旋转案例-6张图片旋转特效
  5. PMP认证需具备哪些条件啊?费用多少啊?
  6. Thunderbird使用教程\好用的邮件客户端
  7. 聊聊这个火爆GitHub的女装大佬项目
  8. 附近小程序复制成美团,商家对改版更加敏感
  9. 表格 html2img:把html转化为图片
  10. 软件开发的流程--中英文对照