java基础语法第七章

java基础语法第七章java 学习之路 0x00 前言 学习 java 也有段时间了 写篇文章来记录一下学习内容 0x01 java 加载机制 说到 java 不得不提的是 java 的类加载机制 java 是一个依赖于 jvm 也就是 java 的虚拟机 实现跨平台的一个开发语言 java 所有的代码都会在 jvm 里面运行 java 在运行中 xx

大家好,我是讯享网,很高兴认识大家。



java 学习之路

0x00 前言

学习java也有段时间了,写篇文章来记录一下学习内容。

0x01 java加载机制

说到java不得不提的是java的类加载机制,java是一个依赖于jvm(也就是java的虚拟机)实现跨平台的一个开发语言,java所有的代码都会在jvm里面运行,java在运行中xx.java的源文件会被编译成class后缀文件(字节码文件)才能运行。java类初始化的时候调用java.lang.ClassLoader加载字节码文件。

下面来看一下jdk和jre、jvm的关系示意图。

26ce070f22bd14a1b7aa35927716fba5.png

0x02 第一个程序

这里直接来复制一段代码

public class test {

public static void main(String[] args) {

System.out.println("Hello wrorld!");

}

}

先来从第一段代码往下看

public class test {}

这里定义了一个类,这里的类名必须和文件的名字一致,否则会报错

public static void main(String[] args) {}

第二行代码表示是他的主函数,在程序里面的入口点都是main。

System.out.println("Hello wrorld!");

第三行代码则是调用System.out.println的方法对屏幕进行打印东西。

0x03 数据类型

数据类型分类

java的数据类型分为两大类:

基本数据类型:包括整数、浮点数、字符、布尔

引用数据类型: 包括类、数组、接口

基本数据类型

数据类型

关键字

字节型

byte

短整型

short

整型

int

长整型

long

单精度浮点型

float

双精度浮点型

double

字符型

char

布尔类型

boolean

java里面默认类型:整数是int、浮点数是double。

0x04 变量定义

变量定义的格式包括三要素:数据类型、变量名、数据值。

格式:

数据类型 变量名 = 数据值;

public class test1 {

public static void main(String[] args) {

int a = 1;

float b= 5.5F;

double c = 5.5;

boolean d = true;

char e ='A';

System.out.println(a);

System.out.println(b);

System.out.println(c);

System.out.println(d);

System.out.println(e);

}

}

long类型数据加上L表示。

float加上f表示。

定义的变量不赋值则无法使用。

0x04 类型转换

自动类型转换

public static void main(String[] args) {

int a =1;

byte b = 2;

int c =a+b;

System.out.println(c);

}

运行成功,运行结果输出3

这可以运行成功是因为在内部进行了自动的类型转换,把b变量的byte类型自动转换成了int类型

java基础语法第七章

强制类型转换

转换格式:

数据类型 变量名 = (转换的数据类型) 被转换的变量

int i = (int)1.5

强制类型转换会导致数据精度损失

0x05 赋值运算符

赋值运算符

赋值运算符

解释

=

赋值

+=

加等于

-=

减等于

*=

乘等于

/=

除等于

%=

取模等于

比较运算符

比较运算符

解释

==

等比两边变量的值

<

对比左边的值是否小于右边的值

>

对比左边的值是否大于右边的值

>=

对比左边的值是否大于或等于右边的值

<=

对比左边的值是否小于或等于右边的值

!=

如果两边的数据不相等结果为true

对于比较运算符结果只会是false或者是ture

逻辑运算符

逻辑运算符

解释

&&

两边结果为ture结果则才tue

||

只要一方结果为true,结果都是true

!true 结果为false,!flase结果为true

至于运算符就不做多的讲解,记录一下,需要用到的时候看看就行。

0x06 方法定义

方法定义格式:

修饰符 返回值类型 方法名(参数列表){

代码

}

返回值类型:void类型为无类型,所以如果定义返回值类型为void,reurn不需要填写

方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法。

参数列表: 可填写传入参数 参数前面必须携带参数变量类型。

return:方法结束。返回值类型是void,如果在返回值定义其他类型,return返回的结果也必须是返回值类型所填写的类型

public static void main(String[] args) {

show();

}

public static void show(){

System.out.println("方法");

}

定义完方法后,方法是会默认加载的,我们还需要在main方法里面去调用该方法。

定义方法注意事项

方法必须定义在一类中方法外

方法不能定义在另一个方法的里面

0x07 流程控制语句

一个程序里面必不可少的就是流程控制,流程控制无非就是判断和循环。首先先来看看判断语句。

if判断

语法:

if (关系表达式){

语句体;

}else{

语句体;

}

执行流程

首先会判断该表达式结果为true还是flase,如果是true就执行语句体,如果是false则执行else里面的内容。

public static void main(String[] args) {

int a = 1;

if (a==1){

System.out.println("a:"+a);

}else{

System.out.println("a!=1");

}

}

switch——选择语句

switch 语句格式:

switch(表达式) {

case 常量值1:

语句体1;

break;

case 常量值2:

语句体2;

break;

...

default:

语句体n+1;

break;

}

执行流程:

首先计算出表达式的值,然后和case依次比较,如果有对应的值,则执行相应的语句,执行完成时遇到break结束。最后如果所有的case值都不匹配就会执行default里面的语句。

public static void main(String[] args) {

int weekday = 6;

switch(weekday) {

case 1:

System.out.println("星期一");

break;

case 2:

System.out.println("星期二");

break;

case 3:

System.out.println("星期三");

break;

case 4:

System.out.println("星期四");

break;

case 5:

System.out.println("星期五");

break;

case 6:

System.out.println("星期六");

break;

case 7:

System.out.println("星期日");

break;

default:

System.out.println("你输入的数字有误");

break;

}

}

循环语句-for

循环语句可以满足在循环条件的情况下,反复执行一段代码。当在达成某个条件的时候必须把循环条件改为flase,让他结束循环,否则就会出现死循环,一直执行下去。

for循环语句格式:

for(初始化表达式;布尔表达式;步进表达式){

循环体;

}

执行流程:

首先初始化一个变量,定义一个表达式和步进表达式,然后循环体执行,如果不满足则继续循环,直到满足布尔表达式的条件则退出循环。

public static void main(String[] args) {

for (int i = 0; i < 20; i++) {

System.out.println("Hello World");

}

}

这里打印了20次,也就是说这循环了20次,循环条件为i小于20,每次执行i就会加1,加到20次就满足了布尔表达式的条件,退出循环。

在这里步进表达式必须要写,否则会陷入死循环。

循环语句2——while

while循环语句格式:

初始化表达式

while(布尔表达式){

循环体

步进表达式

}

public static void main(String[] args) {

//while循环实现打印10次HelloWorld

//定义初始化变量

int i = 1;

//循环条件<=10

while(i<=10){

System.out.println("HelloWorld");

//步进

i++;

}

}

循环语句3 do-while

do-while和while很类似,可以说基本用法都是一样的,但唯一不同的是while如果表达式满足的话就直接不会执行了,而do-while是先执行一遍里面的循环体再判断表达式满不满足条件。

do...while格式:

初始化表达式

do{

循环体

步进表达式

}while(布尔表达式);

public static void main(String[] args) {

int x=1;

do {

System.out.println("HelloWorld");

x++;

}while(x<=10);

}

do...while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。

这里再来说说for循环和while的区别。

控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继

续使用,如果想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消

失,能够提高内存的使用效率。

在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。

跳出循环语句

break

使用场景:

终结循环或者是选择结构switch

continue

使用场景:结束本次循环,继续下一次的循环

0x08 数组

数组概念:数组就是存储数据成都固定的容器,保证多个数据类型要一致。

容器概念:将多个数据存储到一起,每个数据称为该容器的元素。

数组定义

方式一格式:

数据存储类型[] 数组名字 = new 数组存储的类型[长度];

数组定义格式详解:

数组存储的数据类型: 创建的数组容器可以存储什么数据类型。

[] : 表示数组。

数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。

new:关键字,创建数组使用的关键字。

数组存储的数据类型: 创建的数组容器可以存储什么数据类型。

[长度]:数组的长度,表示数组容器中可以存储多少个元素

数组有特定长度,长度一旦指定,不可改变。

int[] arr = new int[3];

方式二格式:

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

方式三格式:

数据类型[] 数据名 = {元素1,元素2,元素3};

访问数组

访问数组数据会利用到索引来访问到数组里面的数据,那就来讲讲这个索引吧。

索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引

(index),可以通过数组的索引访问到数组中的元素。

如果想访问到数据的数据可以在数组变量后面加入中括号,然后里面写入需要索引的值。

数组名[索引]

每个数组都具有长度,而且是固定的。java赋予数值一个属性,可以直接获取数组的长度。

数组名.length

如果想索引到数组的最大值可以直接使用数组名.length-1 获取到,这里之所以减去一是因为从零开始索引的缘故。

在前面也说到过,因为数组的长度一旦定义就无法改变,那么就会出现一些问题,比如索引超出访问,如果索引超出范围的话会爆出空指针异常错误。

数组遍历

遍历数组可以使用for循环进行遍历,获取数组的最大值作为循环条件,然后索引数组的步进数。

public static void main(String[] args) {

int arr[] = {1,20,13,64,45};

for (int i = 0; i < arr.length ; i++) {

System.out.println(arr[i]);

}

}

这样就可以把所有数组的值一一遍历出来了。

数组传递

数组也可以当作参数进行传递

public static void main(String[] args) {

int[] arr = { 1, 3, 5, 7, 9 };

//调用方法,传递数组

printArray(arr);

} /

*

创建方法,方法接收数组类型的参数

进行数组的遍历

*/

public static void printArray(int[] arr) {

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}

方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值。

0x09 结尾

小讯
上一篇 2024-12-30 12:49
下一篇 2024-12-26 19:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/5743.html