Java学习之基础语法篇

java学习之路0x00前言学习java也有段时间了,写篇文章来记录一下学习内容。0x01java加载机制说到java不得不提的是java的类加载机制,java是一个依赖于jvm(也就是

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

java 学习之路

0x00 前言

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

0x01 java加载机制

说到java不得不提的是java的类加载机制,java是一个依赖于jvm(也就是java的虚拟机)实现跨平台的一个开发语言,java所有的代码都会在jvm里面运行,java在运行中xx.java的源文件会被编译成class后缀文件(字节码文件)才能运行。java类初始化的时候调用java.lang.ClassLoader加载字节码文件。
下面来看一下jdk和jre、jvm的关系示意图。
Java学习之基础语法篇

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类型

强制类型转换

转换格式:

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

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 结尾

基础语法篇更新已完成,后续文章持续更新中。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119959.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号