概述
文章目录
- 第一章java概述
- 1.常用的DOS命令(Win+R输入cmd开打)
- 1.1什么是DOS命令
- 1.2新建文件夹
- 1.3切换盘符或目录
- 1.4常用的DOS命令
- 2java编程语言介绍
- 2.1什么是Java
- 2.2Java的发展史
- 2.3Java的平台
- 3.Java语言的特性
- 4.JVM,JDK,JRE三者的关系
- 5.搭建开发环境并编写第一个java代码
- 5.1搭建开发环境
- 5.2编写Java代码
- 5.3编译Java程序
- 5.4编译和运行
- 第二章java标识符和关键字
- 标识符
- 关键字
- 第三章变量和数据类型
- 变量
- 数据类型
- 基本数据类型(包含类型转换)
- 引用数据类型
- IDEA工具的安装
- 1.安装idea
- 2.创建项目和模块
- 2.1创建项目
- 2.2创建模块
- 2.3编写代码
- 2.4运行代码
- 2.5查看控制台
- 2.6idea项目目录
- 3.idea快捷键和设置
- 3.1字体设置
- 3.2idea常用快捷键
- 第四章运算符
- 1.算术运算符
- 2.赋值运算符
- 3.比较运算符
- 4.逻辑运算符
- 5.三元运算符
- 第五章控制语句
- 1.选择语句/分支语句
- 1.1.if
- 1.2.switch
- 2.循环语句
- 2.1.for循环
- 2.2while循环
- 2.3.do..while
- 3.break
- 4.continue
- 第六章方法
- 1.方法的概述
- 2.方法的使用
- 2.1 方法的定义
- 2.2方法的调用
- 2.3方法的调用的顺序
- 2.4带参数的
- 2.5方法的重载
第一章java概述
1.常用的DOS命令(Win+R输入cmd开打)
1.1什么是DOS命令
在DOS命令窗口中才可以输入并执行DOS命令。
在最初的windows计算机中没有图形界面的,只有DOS命令窗口。
也就是说通过执行DOS命令窗口可以完全完成文件的新建、编辑、保存、删除等一系列操作。
1.2新建文件夹
mkdir **
1.3切换盘符或目录
cmd 默认打开的是 C:Users用户名 这个目录
- 切换盘符
- 直接进入盘符即可:例如:进入d盘 在cmd命令窗口上大
d:
回车即可
- 直接进入盘符即可:例如:进入d盘 在cmd命令窗口上大
- 切换目录
- 使用cd命令来完成目录的切换:cd是什么含义?change directory(改变目录)
- cd命令怎么用,语法格式是什么?—
cd 路径
- cd … 回到上一级
- cd 直接回到根路径
- . 一个点,代表当前路径
- 路径在windows上也分绝对路径和相对路径
- 相对路径:相对路径一定是从当前位置作为起点开始找。
- 绝对路径:在windows操作系统中凡是路径起点是盘符的都是绝对路径
1.4常用的DOS命令
- cls 清屏
- dir 查看当前目录下有什么
- exit 退出DOS命令窗口
- del 删除一个或者多个文件
- 删除一个:
C:UsersAdministrator>del T1.class
- 删除多个:
C:UsersAdministrator>del *.class
- 删除一个:
- 查看个人的IP地址
ipconfig(ip地址的配置信息。)
ipconfig /all
该命令后面添加一个/all参数可以查看更详细的网络信息。
- 怎么查看两台计算机是否可以正常通信
- ping命令:
- 语法: ping IP地址
2java编程语言介绍
2.1什么是Java
Java是1995年美国的Sun公司(Stanford University Network/斯坦福大学网络公司)推出的一门面向对象的高级编程语言
那什么是面向对象呢?
是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某事物在整个解决问题的步骤中的行为。
2.2Java的发展史
- 1995年Sun公司发布Java1.0版本
- 1997年发布Java 1.1版本
- 1998年发布Java 1.2版本
- 2000年发布Java 1.3版本
- 2002年发布Java 1.4版本
- 2004年发布Java 1.5版本
- 2006年发布Java 1.6版本
- 2009年Oracle甲骨文公司收购Sun公司,并于2011发布Java 1.7版本
- 2014年发布Java 1.8版本
- 2017年发布Java 9.0版本
- 2018年3月发布Java10.0版本
- 2018年9月发布Java11版本
- 2019年3月发布Java12版本
- 2019年9月发布Java13版本
- 2020年7月发布Java14版本
- 2021年1月发布Java15版本
尽管出现了新版本,Java 8仍然是最受欢迎的。它被四分之三的Java开发人员使用。Java 11越来越流行。与去年相比,它的使用率增加了10个百分点。更新的Java 12和Java 13很快就找到了它们的受众。在我们调查的开发者中,有10%或更多的人经常使用它们。
2.3Java的平台
Java 平台有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发;
- Java SE(Java Platform,Standard Edition):标准版(基础,要学java,必须先学习SE。基础语法+基础库)
- Java EE(Java Platform,Enterprise Edition):企业版(专门为企业开发软件,为企业提供解决方案。例如:OA办公系统,保险行业的系统,金融行业的系统,医院系统…)
- Java ME(Java Platform,Micro Edition):微型版(专门为微型设备做嵌入式开发的。)
3.Java语言的特性
- 简单性
- Java语言的语法简单明了,容易掌握,而且是纯面向对象的语言。Javra 语言的简单性主要体现在以下几个方面:
- 语法规则和 C++类似。从某种意义上讲,Java 语言是由C和C++语言转变而来的,所以C程序设计人员可以很容易地掌握Java语言的语法。
- Java语言对C++进行了简化和提高。例如,Java 使用接口取代了多重继承,并取消了指针,因为指针和多重继承通常使程序变得复杂。Java 语言还通过垃圾自动收集,大大简化了程序设计人员的资源释放管理工作。
- Java提供了丰富的类库、API 文档以及第三方开发包,另外还有大量基于Java的开源项目。JDK (Java开发者工具箱)已经开放源代码,读者可以通过分析项目的源代码,提高自己的编程水平。
- 面向对象:
- 面向对象是Java语言的基础,也是Java语言的重要特性,它本身就是一种纯面向对象的程序设计语言
- Java提倡万物皆对象,语法中不能在类外面定义单独的数据和函数,也就是说,Java语言最外部的数据型是对象,所有的元素都要通过类和对象来访问。
- 健壮性
- 主要是因为Java中有一种机制:自动垃圾回收机制(GC机制)。
- java语言是健壮的,相对于C语言来说,C语言没有Java健壮。
- Java不容易导致内存的泄漏。C++或者C语言使用不当时很容易导致内存泄漏。
- java完全/完美支持多线程并发。
- 可移植性/跨平台
- 只要Java语言编写了一次,就可以在各个系统上去运行(Windows、Linux、mac)
4.JVM,JDK,JRE三者的关系
- JDK (Java Development Kit):是Java程序开发工具包,包含 JRE 和开发人员使用的工具;
- JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需的核心类库;
- JVM(Java Virtual Machine ):是一款Java虚拟机,模拟Java运行时的一个平台,对内存分配,管理、线程调度等都有一定的管理;
JDK包括JRE,JRE包括JVM。
JVM是不能独立安装的。JRE和JDK都是可以独立安装的。
有单独的JDK安装包。也有单独的JRE安装包。
没有单独的JVM安装包。
安装JDK的时候:JRE就自动安装了,同时JRE内部的JVM也就自动安装了。
安装JRE的时候:JVM也就自动安装了。
问题:
假设你在软件公司开发了一个新的软件,现在要去客户那边给客户把
项目部署一下,把项目跑起来,你需要安装JDK吗?
只需要安装JRE就行了。
JRE体积很小,安装非常便捷快速
5.搭建开发环境并编写第一个java代码
5.1搭建开发环境
-
下载JDK,进入官网
-
下载JDK
选择版本
-
下载的JDK找一个目录命名为java解压就可以(之前下载过了,所有就使用的 17.0.1的版本)
-
之后我们需要配置环境变量,"我的电脑"打开属性选项,
-
之后点击高级系统设置
-
之后点击环境变量
-
之后 我们要在"系统环境"中,配置java的环境
-
配置 JAVA_HOME 这个要新建
- 这个就是你解压JDK的目录
C:Program Filesjavajdk-17.0.1
- 这个就是你解压JDK的目录
-
点击选中Path变量,之后点击编辑。配置Path环境变量
新建之后编写上 “%JAVA_HOME%bin”
-
-
之后 打开cmd命令窗口 输入
java -version
查看java的版本 保证配置成功
5.2编写Java代码
Java开发环境已经搭建完毕,可以开发我们第一个Java程序了。
新建一个HelloJava.java的文件,并且编写代码:
public class HelloJava{
public static void main(String[] args){
System.out.println("2022-9-26:Hello Java!!!");
}
}
注意:文件名要和类名(public class 后面的)保持一致!!
5.3编译Java程序
在DOS命令行中,进入Java源文件的目录,使用javac
命令进行编译。
格式如下:
javac Java源文件名.后缀名
示例:
javac HelloWorld.java
编译:
运行:
java HelloJava
(注意这里是不用加后缀名的)
2022-9-26:Hello Java!!!
5.4编译和运行
java程序非常重要的两个阶段:编译阶段和运行阶段
-
编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们
所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
-
运行:是指将 class文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了
到这里第一章的java概述就结束啦
第二章java标识符和关键字
标识符和关键字的定义:计算机处理的对象就是数据,而数据了解标识符和关键字。标识符就是用来标识实体的号,可以用来标识变量名,函数名和对象名等;关键字就是程序发明者规定的有特殊含义的单词,又叫保留字。
标识符
-
标识符是用来标识变量、函数、类、模块,或者任何其他用户自定义项 目的名称,用它来命名程序正文中的一些实体,比如函数名、变量名、类名、对象名等。
类名:public class biaoshifu{} //这里面的biaoshifu就是类名 方法名:public static void main(String [] args) //这里面的main就是方法名 变量名:int a=100;//这里的a就是变量名
-
命名规则(必须):
- 标识符只能由数字、字母、下划线、美元符号$组成
- 标识符不能以数字开头
- 关键字不能为标识符
- 关键字是严格区分大小写的
- 虽然java中的标识符严格区分大小写,但对于类名来说,如果一个java文件中同时出现了A类和a类那么在前就生成谁
-
标识符的命名规范(非必须)
- 规范一:见名之意
- 规则二:遵循驼峰命名方式(一高一低)–BiaoShiFuTest
- 规则三:类名、接口名有特殊要求–类名和接口名首字母大写,后面每个单词首字母大写
- 规则四:变量名、方法名有特殊要求–变量名和方法首字母小写,后面的每个单词首字母小写
- 规则五:所有常量名全部大写并且单词与单词之间采用下划线衔接
题目:
创建一个123.java文件可以嘛?—是可以的,因为123并不是标识符在123.java文件中定义一个public类可以嘛?
不可以,因为在public类中,类名和文件名保持一致文件名为123 所以不行
关键字
- 什么是关键字?
- 在SUN公司开发Java语言的时候,提前定义好了一些具有特殊含义的单词,这些单词全部小写,具有特殊含义,不能用作标识符。
关键字都有那些呢(不需要花大量的时间去记)?
public、static、void、class、byte…
第三章变量和数据类型
变量
-
什么是变量呢?
- 变量就是一个存数据盒子。(盒子大小谁来决定啊?数据类型。变量存储什么样的数据?数据类型决定)
在内存中的最基本的存储单元。
存数据用的,而且这个数据是可变的,所以叫做变量。
- 变量就是一个存数据盒子。(盒子大小谁来决定啊?数据类型。变量存储什么样的数据?数据类型决定)
-
变量的使用
-
变量的三要素? 数据类型、变量名、值 (值就是数据,就是字面量。)
int i = 100;
-
java中的变量必须先声明,再赋值才能访问(必须手动赋值。)
int k; System.out.println(k);// 这样是不行的。
-
可以在一行上声明多个变量:
int a, b, c = 100;//c变量赋值100,a,b变量只声明了没有赋值。 int a = 10, b = 20, c = 100;//可以这样每个都赋值。
-
当然声明和赋值也可以分开做
int i; i=100; System.out.println(i);//100
-
在"同一个域"中,变量名不可重复,
-
但可以重新赋值
{ int i=100; double i=200.0;//重名了编译器会报错,不允许。 i = 300; // 可以重新赋值。 }
-
-
那到底什么是一个域呢?
-
目前解释不了,什么是一个域只需要记住一个大括号是一个域
{A域 {B域 {C域 } } } A域包括B域,B域包括C域。
-
-
-
变量的分类–根据位置进行分类:记住就行
-
在方法体当中声明的变量叫做局部变量。
public static void m1(){ //局部变量,方法执行结束之后内存释放。 int k = 100; int i = 200; }
-
在方法体外以及类体内声明的变量叫做成员变量。
public class T{ // 成员变量 int i = 200; public static void x(){ //局部变量,方法执行结束之后内存释放。 int k = 100; } }
-
-
变量的作用域–出了大括号就不认识了。别的先别管。
java中有一个重要原则,那个变量离的近 就用那个{ int i = 100; { 在这里可以访问i } } { 在这里是无法访问i变量。 }
数据类型
数据类型分为基本数据类型和引用数据类型
基本数据类型(包含类型转换)
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128~127 |
短整型 | short | 2个字节 | -32768~32767 |
整型 | int(默认) | 4个字节 | -2147483648~2147483647 |
长整型 | long | 8个字节 | -2的63次方~2的63次方-1 |
单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 8个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0-65535 |
布尔类型 | boolean | 1个字节 | true,false |
Java中的默认类型:整数类型是 int 、浮点类型是 double;
/* 在java中有一条重要的结论:在任何情况下,整数型的字面量/数据默认被当作int类型数据 如果字面量希望被当作long数据类型来处理,需要在字面量后面加上一个L */ public static void main(String[] args) { //200这个字面量默认当作int类型来处理 //b变量是long类型,int类型占4个,long类型占8个 //小容量可以自动转化成大容量,这种操作被称为:自动类型转换 long b=200; System.out.println(b); long c=300L; System.out.println(c); // int i=2147483648; //在java中,整数型字面量一上来编译器就会将它看做int //而2147483648超出了int范围,所以在没有编译之前就出错 //报错愿意 操作太大 //long d=2147483648; //解决 long d=2147483648L; System.out.println(d); }
对于这些基本数据类型有一些转换规则:
-
第一条:八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换
-
第二条:如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋
-
第三条:小容量向大容量转换称为自动类型转换,容量从小到大的排序为:
byte < short(char) < int < long < float < double,
其中 short和 char都占用两个字节,但是char 可以表示更大的正整数; -
第四条:大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,
但运行时可能出现精度损失,谨慎使用;
强制类型转换规则:数据类型 变量名 = (数据类型)被转数据值; -
第五条:byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;
byte、short、char->int->long->float->double
-
第六条:多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;
综合
8种数据类型boolean类型不能转换,其他七种类型之间都可以进行转换
如果整数型字面量没有超出byte short char的取值范围,可以之间将其赋值
小容量向大容量转换称为自动类型转换,容量从小到大的排序为:
byte<short(char)<int<long<float<double其中short和char都占两个字节,但char可以表示更大的正整数。
大容量转小容量称为自动类型转换byte short char类型混合运算时,各自先转换成int类型(byte+byte也会转换成int类型)
多种数据类型转换运算,各自转换成容量最大的哪一种运算
综合代码示例:
自动类型转换:将取值范围小的类型 自动提升为取值范围大的类型
//范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为 int ;
public class demo2 {
public static void main(String[] args) {
System.out.println("int类型和byte类型进运算");
// 一个 int 类型和 byte类型 进行相加
int a = 1;
byte b = 2;
//运算结果3,变量的类型将是 int 类型,这就是出现了数据类型的自动类型转换现象。
System.out.println(a + b);
//byte x=a+b;报错 int类型和byte类型运行,结果是int类型
int y= a+b;
System.out.println(y);
System.out.println("==============================================");
//当一个 int 类型变量和一个 double 变量运算时, int 类型将会自动提升为 double 类型进行运算
System.out.println("int类型和double类型进运算");
int p=1;
double q=1.5;
//int x=p+q;这样会报错 因为 自动类型转换 运算结果是向范围大的进行转换
double z=p+q;
}
}
强制类型转换:将 取值范围大的类型 强制转换成 取值范围小的类型;比较而言,自动转换是Java自动执行的,而制转换需要我们自己手动执行。
引用数据类型
字符串型String属于引用数据类型。
String字符串不属于基本数据类型范畴。
java中除了基本数据类型之外,剩下的都是引用数据类型。
引用数据类型后期面向对象的时候才会接触。
String类型使用:
public class Demo3 {
public static void main(String[] args) {
String str1="hello~";
String str2="你好啊~";
String str3="嘿嘿~";
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
}
IDEA工具的安装
工欲善其事,必先利其器。要想快速的编写代码,必须有一个好的编译软件,idea下载官网
IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java,Kotlin等少数语言。
1.安装idea
我自己用的是idea2021的版本,可以参考IntellIJ IDEA安装和破解手册
2.创建项目和模块
2.1创建项目
-
点击
Create New Project
: -
创建一个空的工程
2.2创建模块
-
在弹出的对话框中,点击"+",然后点击
New Module
创建一个新的模块:
-
创建一个Java模块
-
选择模块的磁盘路径:
-
目录介绍
2.3编写代码
public class demo {
public static void main(String[] args) { //主方法生成 psvm
System.out.println("hello world");//输出语句 sout
}
}
2.4运行代码
2.5查看控制台
2.6idea项目目录
- .idea:和我们开发无关,是IDEA工具自己使用的
- out:目录是存储编译后的.class文件
- Demo01:模块所在文件夹
3.idea快捷键和设置
这里只介绍一些常用的快捷键和通用的设置
3.1字体设置
点击菜单栏上的 File->Settings->Editor->Font
修改字体
3.2idea常用快捷键
快捷键 | 功能 |
---|---|
Alt+Enter | 导入包,自动修正代码 |
Ctrl+Y | 删除一行 |
Ctrl+D | 快速复制一行 |
Ctrl+Alt+L | 格式化代码 |
Ctrl+/ | 单行注释 |
Ctrl++Shift+/ | 多行注释 |
Alt+Shift+上下箭头 | 移动当前代码行 |
Ctrl+Shift+N | 快速查询当前项目下的所有文件 |
Ctrl+N | 快速查询当前项目的所有类 |
ctrl+alt+t |
有的时候我们要debug,
Step Over F8下一步
Step Into F7 进入到某个方法中
Force Step Into Alt+Shift+F7 强制进入
Step Out Shift+F8 从某个方法中返回
Drop Frame 返回上一个断点
Run to Cursor Alt+F9 跳转到光标所在的这一行
第四章运算符
1.算术运算符
算术运算符 | |
---|---|
+ | 加法运算,字符串连接运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算,两个数字相除取余数 |
++、-- | 自增自减运算 |
2.赋值运算符
赋值运算符,就是将符号右边的值,赋给左边的变量。
赋值运算符 | |
---|---|
= | 赋值 |
+= | 加后赋值 |
-= | 减后赋值 |
*= | 减后赋值 |
/= | 除后赋值 |
%= | 取模后赋值 |
注意:
a=a+b和a+=b有什么区别
+= 操作符会进行隐式自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类
型,而a=a+b则不会自动进行类型转换
byte a = 127; byte b = 127; b = a + b; // 报编译错误:cannot convert from int to byte //正确写法 b += a; //有错误.short类型在进行运算时会自动提升为int类型,也就是说 s1+1 的运算结果是int类型,而s1是short类型,此时编译器会报错 short s1= 1; s1 = s1 + 1; //正确写法: short s1= 1; s1 += 1;
3.比较运算符
比较运算符: | |
---|---|
== | 比较符号两边数据是否相等,相等结果是true。 |
< | 比较符号左边的数据是否小于右边的数据,如果小于结果是true。 |
> | 比较符号左边的数据是否大于右边的数据,如果大于结果是true。 |
<= | 比较符号左边的数据是否小于或者等于右边的数据,如果小于或等于结果是true。 |
>= | 比较符号左边的数据是否大于或者等于右边的数据,如果小于或等于结果是true。 |
!= | 不等于符号 ,如果符号两边的数据不相等,结果是true。 |
4.逻辑运算符
逻辑运算符,是用来对两个布尔类型进行运算的,运算结果都是布尔值 true
或者 false
运算符 | 运算规则 | 示例 | 结果 |
---|---|---|---|
& | 与(有假为假) | false&true | false |
` | ` | 或(有真为真) | false|true |
^ | 异或(相同为false,不同为true) | false^true | true |
! | 非(取反,true为false,false为trie) | !true | false |
&& | 短路与(和& 一样,前面条件为false不执行后面的,效率高) | false&&true | false |
5.三元运算符
三元运算符格式:
数据类型 变量名 = 布尔类型表达式 ? 结果1 : 结果2;
- 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
- 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。
第五章控制语句
1.选择语句/分支语句
1.1.if
四种写法
-
if(布尔表达式){ }
-
if(布尔表达式){ }else{ }
-
if(布尔表达式){ }else if(布尔表达式){ }else if(布尔表达式){ }else if(布尔表达式){ }else if(布尔表达式){ }
-
if(布尔表达式){ }else if(布尔表达式){ }else if(布尔表达式){ }else if(布尔表达式){ }else if(布尔表达式){ }else{ }
-
if语句嵌套:
if(布尔表达式){ //前提条件 if(布尔表达式){ if(布尔表达式){ }else{ } } }else{ }
-
执行原理
对于一个if语句来说,只要有1个分支执行,整个if语句结束。 当布尔表达式的结果为true时,分支才会执行。 分支当中只有一条java语句,大括号可以省略。 带有else的可以保证肯定会有一个分支执行。
1.2.switch
完整语法结构:
switch(值){ //值允许是String、int,(byte,short,char可以自动转换int)
case 值1: case 值x:
java语句;
break;
case 值2:
java语句;
break;
case 值3:
java语句;
break;
default:
java语句;
}
2.循环语句
2.1.for循环
for循环语法机制:
for(初始化表达式;条件表达式;更新表达式){
循环体;
}
for(int i = 0; i < 10; i++){
System.out.println(i);
}
for循环执行原理:
1、先执行初始化表达式,并且只执行1次。
2、然后判断条件表达式
3、如果为true,则执行循环体。
4、循环体结束之后,执行更新表达式。
5、继续判断条件,如果条件还是true,继续循环。
6、直到条件为false,循环结束。
2.2while循环
while(布尔表达式){
循环体;
}
执行次数:0~N次。
2.3.do…while
do{
循环体;
}while(布尔表达式);
执行次数:1~N次。
3.break
默认情况下,终止离它最近的循环。当然,也可以通过标识符的方式,终止指定的循环。
4.continue
终止当前“本次”循环,直接跳入下一次循环继续执行。
第六章方法
1.方法的概述
是可以完成某个特定功能的并且可以重复利用的代码片段。在C语言中,方法被称为函数。
你定义一个/抽取一个方法出来,而这个方法却无法完成某个特定功能,那么你抽取的这个方法毫无意义。一般一个方法就是一个“功能单元”。假设在以后的开发中,某个功能是可以独立抽取出来的,建议定义为方法,这样以后只需要这个功能,那么直接调用这个方法(函数)即可,而不需要重复编写业务代码。
简单来说Java方法是语句的集合,它们在一起执行一个功能。
方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
2.方法的使用
2.1 方法的定义
定义格式
[修饰符列表] 返回值类型 方法名(形式参数列表){
代码块;
return 返回值;
}
定义格式名词解释:
- 修饰符: 目前固定写法
public
、static
。 - 返回值类型: 方法运行结果的数据类型,如果该方法没有返回值,那么请声明为
void
- 返回值类型可以是任何类型,只要java中合法的数据类型就行,数据类型包括基本数据类型和引用数据类型。
- 当一个方法执行结束不返回任何值得时候,返回值得类型也不能空白,必须写上void关键字,所以void表示该方法执行结束不返回任何结果
- 第四如果返回值类型不是void,那么在方法体结束后,必须使用return返回来返回值,如果没有编译报错
- 只要有return关键字执行,那么当前方法体结束,如果返回值类型为void 则方法体 中不能有 return 值,
return; 代表整个方法体的结束.
- 方法名:满足标识符的规范,用来调用方法。
- 参数列表:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
举例
public static void methodName(){
System.out.println("方法定义举例");
}
2.2方法的调用
方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中,直接写要调用的方法名字就可以调用了
//在方法调用的时候,在同一个类中,类名可以省略
//如果不在同一个类中,类名不能省略
public class MethodTest {
public static void main(String[] args){
//那么我们的类名可以省略吗
daYin1();
daYin2();
daYin3();
//像这种情况下“类名”就不能省略了
Myclass.daYin1();
Myclass.daYin2();
Myclass.daYin3();
}
public static void daYin1(){
System.out.println("hellp world");
}
public static void daYin2(){
System.out.println("hellp world2");
}
public static void daYin3(){
System.out.println("hellp world3");
}
}
class MyClass{
public static void daYin1(){
System.out.println("1");
}
public static void daYin2(){
System.out.println("2");
}
public static void daYin3(){
System.out.println("3");
}
}
2.3方法的调用的顺序
示例:
public class MethodTest {
public static void main(String[] args){
System.out.println("This is main");
m1();
System.out.println("main over");
}
public static void m1(){
System.out.println("This is m1");
m2();
System.out.println("m1 over");
}
public static void m2() {
System.out.println("This is m2");
m3();
System.out.println("m2 over");
}
public static void m3(){
System.out.println("This is m3");
T.m4();
System.out.println("m3 over");
}
class T{
public static void m4(){
System.out.println("This is m4");
System.out.println("m4 over");}
}
}
/*
以上代码会输出什么呢?
This is main
This is m1
This is m2
This is m3
This is m4
m4 over
m3 over
m2 over
m1 over
main over
*/
JVM(虚拟机)的三大主要内存:栈内存,堆内存,方法区内存
- 方法区:我个人理解就是存放代码的(存放一些类的信息,静态变量,方法的信息,常量池等)
- 堆内存:到后面会有详细的解释
- 栈内存:方法执行的内存空间,以及局部变量
- 方法调用的时候压栈(入push),方法结束的时候弹栈(出pop)
- 采用的是先进先出,后进先出的原则
栈的数据结构,采用图的形式
对上方代码做出解释
-
程序加载,将一些class字节码文件、方法代码块进行加载
-
之后找到主程序入口也就是main方法,main方法输出
System.out.println("This is main");
-
之后调用m1方法,这里注意,调用m1()方法的时候,也就是将m1()方法压栈,main方法后面的代码就会停止运行,就行转到m1()方法执行代码 紧接着m1()方法调用m2()方法。m2()方法压栈,m1()方法后面的代码会停止运行转到m2()… 以此类推,当最后一个方法执行完之后,就会出栈。就会转到之前调用这个方法的方法继续执行没有执行完的代码.。
2.4带参数的
其实在声明方法的时候我们要定义返回值类型和形式参数列表
public class MethodTest {
public static void main(String[] args) {
int max = max(20, 18);
System.out.println("最大值为: "+max);
}
public static int max(int num1, int num2) {
return num1>num2?num1:num2;
}
}
2.5方法的重载
方法重载的定义和使用
- 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关(即使修饰符和返回值列表不一样也属于重载)
- 参数列表不同:个数不同,数据类型不同,顺序不同。
没有用方法重载的弊端
-
//三个方法功能不同,但是相似,分别起了不同的名字 //第一:代码不够美观 //第二:程序员需要记忆更多的方法名称,累!! public class overrideTest01 { public static void main(String[] args) { System.out.println(sumint(10,20)); System.out.println(sumlong(10L,20L)); System.out.println(sumdouble(10.0,20.0)); } public static int sumint(int x,int y){ return x+y; } public static long sumlong(long x,long y){ return x+y; } public static double sumdouble(double x,double y){ return x+y; } }
使用方法重载
-
public class overrideTest02 { public static void main(String[] args) { //对于程序员来说,只需要记忆一个方法名即可 System.out.println(sum(10,20)); System.out.println(sum(10L,20L)); System.out.println(sum(10.0,20.0)); } public static int sum(int x,int y){ System.out.println("int的"); return x+y; } public static long sum(long x,long y){ System.out.println("long的"); return x+y; } public static double sum(double x,double y){ System.out.println("double的"); return x+y; } }
最后
以上就是忐忑胡萝卜为你收集整理的第一节Java基础第一章java概述第二章java标识符和关键字第三章变量和数据类型IDEA工具的安装第四章运算符第五章控制语句第六章方法的全部内容,希望文章能够帮你解决第一节Java基础第一章java概述第二章java标识符和关键字第三章变量和数据类型IDEA工具的安装第四章运算符第五章控制语句第六章方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复