JAVA学习笔记

简介: Java是一门面向对象编程语言,功能强大且简单易用。Java经常需要new个对象,而面向对象就是面向对象的编程,由Object Oriented Programming翻译而来,简称OOP。

Java简介


Java是一门面向对象编程语言,功能强大且简单易用。


Java经常需要new个对象,而面向对象就是面向对象的编程,由Object Oriented Programming翻译而来,简称OOP。


最初编程是面向过程的,通过算法来解决问题。但是随着时代的进步,使用算法来解决问题太过困难,因为问题越来越复杂,因此就有了对象这个概念。我们将现实的事物抽象出来,把现实生活的事物以及关系,抽象成类,通过继承,实现,组合的方式进行编程。


面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。


面向对象是模型化的,我们只需抽象出一个类,类相当于一个盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现。


抽象来说,面向过程相当于自己炒菜,面向对象相当于去菜馆点菜。


因此Java作为面向对象的编程语言,功能强大且简单易用。


版本

Java SE(标准版)

Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为Java EE和Java ME提供基础。


Java EE(企业版)

Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。


Java ME(微型版)

Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。


名词解释

JVM

Java Virtual Machine的缩写,Java虚拟机的意思;用于加载.class字节码文件并运行.class字节码文件。


JRE

Java Runtime Environment的缩写,JRE包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包。


如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。


JDK

Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。


其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等。


关系图


Java标识符

标识符定义

凡是可以由自己命名的地方都称为标识符。

例如,对于常量、变量、函数、语句块、类、项目等都需要一个名字,这些我们都统统称为标识符。


标识符命名规范

类名和接口名:每个单词的首字母,其余为小写。(大驼峰)


举例:Student,Car,HelloWorld


方法名:第二个单词起的首字母为大写,其余全为小写。(小驼峰)


举例:age,maxAge,show(),getAge()


常量名:基本数据类型的常量名使用全部大写字母,字与字之间用下划线分隔。


举例:DATE,MAX_AGE


项目名:全部用小写字母,多个单词之间用横杆-分割。

举例:demo,spring-boot


包名:全部小写,多级包用.隔开。

举例:com.jourwon


注意


1.标识符有字母、数字、_(下划线)、$所组成,其中不能以数字开头,不能用Java中的保留字(关键字)


2.标识符采用有意义的简单命名


3."" 不要在代码中出现。(在后面内部类中,编译后会出现 "不要在代码中出现。(在后面内部类中,编译后会出现"不要在代码中出现。(在后面内部类中,编译后会出现符号)


Java关键字


6c06713a90b58f82b42468fa14e9bdf.png

2169bd9a73d03b13dcb6ce27e9a6771.png

1910df854a8158d3f4516dda8acc9c0.pnge812ff977fa1a76b12590346c8c449c.png

Java流程控制语句

顺序结构

ea02965435e310d4ff3f5e564206b57.png


分支结构

分支结构是一种编程结构,用于根据条件的不同选择不同的执行路径。在分支结构中,程序会根据某个条件的真假来决定执行哪个代码块。常见的分支结构有 if-else、switch等。


if-else语句是最常见的分支结构之一,它根据条件的真假执行不同的代码块。if语句会先判断条件是否为真,如果为真,则执行if代码块中的语句;如果条件为假,则执行else代码块中的语句。


if-else结构:

51b6dd8b772691742a84278aa95d53e.png


switch结构:

b9027fcc933a74a23c748a46c0b57ba.png

4f1e13f6cddc3384e76c825a5356bf9.png


循环结构

Java提供了三种主要的循环结构:for循环、while循环和do-while循环。


for循环:

for循环是一种在已知循环次数的情况下使用的循环结构。它由三个部分组成:初始化表达式、循环条件和循环迭代。

daacf3103bd7aab5f4baa7e18949575.png


初始化表达式在循环开始前执行一次,循环条件在每次循环开始前进行检查,如果条件为真,则执行循环体代码,然后执行循环迭代,再次检查循环条件。这个过程会一直重复,直到循环条件为假时跳出循环。


while循环:

while循环用于在循环开始之前不知道循环次数的情况下执行循环。它只包含一个循环条件,当循环条件为真时执行循环体代码。

cf7b5c2e0838125309777f6dce97a9c.png


在每次循环开始前,会先检查循环条件是否为真,如果是,则执行循环体代码,然后再次检查循环条件。这个过程会一直重复,直到循环条件为假时跳出循环。


do-while循环:

do-while循环与while循环非常相似,但不同的是,在执行循环体代码之前,先判断循环条件。这意味着无论循环条件的结果如何,循环体代码至少会执行一次。

5f176246740da4953625a340b466d9a.png


首先执行循环体代码,然后检查循环条件。如果循环条件为真,则继续执行循环体代码,然后再次检查循环条件。这个过程会一直重复,直到循环条件为假时跳出循环。


这些循环结构可以嵌套使用,可以根据具体的需求选择最合适的循环结构来解决问题。同时,需要注意在循环体内部使用控制语句如break和continue来控制循环的执行流程。


Java变量

变量

变量是存储数据值的容器。


在 Java 中,有不同类型的变量,例如:


String- 存储文本,例如“hello”。字符串值用双引号括起来


int - 存储整数(整数),不带小数,例如 123 或 -123


float - 存储带小数的浮点数,例如 19.99 或 -19.99


char- 存储单个字符,例如 ‘a’ 或 ‘B’。char 值用单引号括起来


boolean - 存储具有两种状态的值:真或假


最终变量

如果不希望变量现有值被覆盖,则可以添加关键字(这会将变量声明为“final”或“constant”,这意味着不可更改和只读)。

7a3f27514afb4bf03d5cda2a1e525f1.png


显示变量

println()方法通常用于显示变量。要组合文本和变量,可以使用文本+字符。


例如:

db01d94f85282806f2f7412d809a6c7.png


还可以使用该+字符将一个变量添加到另一个变量中

f804ed1aa6d934277ee0eeed605821a.png


Java常量

常量定义:在程序执行的过程中,其值不可以发生改变的量。


例:Java 语言使用 final 关键字来定义一个常量

final int COUNT=10;

final float HEIGHT=10.2F;


在Java中,后缀"F"用于表示浮点数字面值是单精度浮点数(float)而不是双精度浮点数(double)。当字面值带有小数点时,默认情况下会被认为是双精度浮点数。为了显式指定一个值为单精度浮点数,可以在数字后面添加"F"或"f"后缀。


在上述示例中,10.2F表示一个单精度浮点数。如果不添加"F"后缀,编译器会将该数字默认为双精度浮点数,并产生一个编译错误,因为你在声明变量时使用的是float,而不是double类型。


注意事项


在定义常量时就需要对该常量进行初始化。

final 关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。

为了与变量区别,常量取名一般都用大写字符。

数组

数组(array)是一种用于存储多个相同类型数据的存储模型。


数组定义格式:


1、数据类型[] + 数组名

f262eb8c75ee702d4c445e52a4c0478.png


2、数据类型 + 数组名[] (不推荐)

f1d39280a425c25cfebd3390842dc0f.png


数组动态初始化:

be231b0d2a01f0759c9043db3ad4c1a.png


方法概述

概念

方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集


注意:

方法必须先创建才可以使用,该过程成为方法定义

方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

无参数方法的定义和调用

介绍

定义:

517ff057c4e9220b2dc1c3562ee2309.png


调用:

9d4ad19f2e3f25d64ebb36576df0c96.png


注意:


方法必须先定义,后调用,否则程序将报错


练习

需求:设计一个方法用于打印两个数中的较大数

思路:

①定义一个方法,用于打印两个数字中的较大数,例如getMax()

②方法中定义两个变量,用于保存两个数字

③使用分支语句分两种情况对两个数字的大小关系进行处理

④在main()方法中调用定义好的方法

代码:

2b3bbf9de749835d3639942c6cccc8c.png


带参数方法的定义和调用

介绍

定义:

5e0517fe9f729ffa6f3229998cda609.png


调用:

8131e0c9b0703dc44c5a0fb2d916070.png


练习

需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数


思路:


①定义一个方法,用于打印两个数字中的较大数,例如getMax()

②为方法定义两个参数,用于接收两个数字

③使用分支语句分两种情况对两个数字的大小关系进行处理

④在main()方法中调用定义好的方法(使用常量)

⑤在main()方法中调用定义好的方法(使用变量)

代码:

288f88c9e630d3c9cabe3aa7dc2685a.png


带参数方法的定义和调用

介绍

定义:

cfbb0e1eff6580f7b14e60700f3508c.png


调用:

efc7ee597545acc56fa2fa2c9c4d811.png


注意:

方法的返回值通常会使用变量接收,否则该返回值将无意义

练习

需求:设计一个方法可以获取两个数的较大值,数据来自于参数

思路:

①定义一个方法,用于获取两个数字中的较大数

②使用分支语句分两种情况对两个数字的大小关系进行处理

③根据题设分别设置两种情况下对应的返回结果

④在main()方法中调用定义好的方法并使用变量保存

⑤在main()方法中调用定义好的方法并直接打印结果

代码:

fc5e9d51c675e24dfa9c3ab2105ce02.png


方法的注意事项:方法不能嵌套定义


相关文章
|
6月前
|
Java 编译器 开发工具
Java基础学习笔记——idea篇
JDK由JRE(包含JVM和核心类库)和开发工具箱(如javac编译器和java运行工具)组成。Java项目结构包括Project、Module、Package和Class。IDEA快捷键包括:生成main方法(main psvm)、复制代码(Ctrl+D)、删除代码(Ctrl+Y/X)、格式化代码(Ctrl+Alt+L)、重命名(Shift+F6)等。
51 0
|
6月前
|
监控 负载均衡 Dubbo
|
3月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
1月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
33 0
|
1月前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
35 0
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
3月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
57 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
3月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
132 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)