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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TypeScript高级类型-Partial

    TypeScript高级类型-PartialTypeScript高级类型-Partial预备知识:TypeScript类型系统接口泛型先来看一下Partial类型的定义/***MakeallpropertiesinToptional*/typePartial<T>={[PinkeyofT]?:T[P];};假设我们有一个定义user的接口,如下int…

    2025年7月10日
    4
  • vsftp搭建[通俗易懂]

    vsftp搭建[通俗易懂]阿里云ECS专有网络下vsftpd服务搭建

    2022年9月24日
    6
  • python和java的区别-python与java区别[通俗易懂]

    python和java的区别-python与java区别[通俗易懂]Python和Java都是很火的编程语言,对于想学习编程的人员来说,常常被这个问题所困扰:我是该学Python还是Java呢?想要解决这个问题,还需结合自身实际情况和两种语言的特点进行分析。以下是Python和Java的区别:(推荐学习:java课程)1.Python比Java简单,学习成本低,开发效率高;2.Java运行效率高于Python,尤其是纯Pytho…

    2022年7月9日
    26
  • Element 修改 table 里面的滚动条样式

    不考虑兼容的时候,可以全局设置成这种样式修改全局滚动条样式<style>/*定义滚动条高宽及背景高宽分别对应横竖滚动条的尺寸*/::-webkit-scrollbar{width:6px;/*滚动条宽度*/height:8px;/*滚动条高度*/background-color:white;}/*定义滑块内阴影+圆角*/::-webkit-scrollbar-thum.

    2022年4月9日
    457
  • kafka零拷贝原理_通俗易解中的解是什么意思

    kafka零拷贝原理_通俗易解中的解是什么意思Kafka之所以那么快,其中一个很大的原因就是零拷贝(Zero-copy)技术,零拷贝不是kafka的专利,而是操作系统的升级,又比如Netty,也用到了零拷贝。下面我就画图讲解零拷贝,如果对你有帮助请点个赞支持。传统IOkafka的数据是要落入磁盘的,那么必然牵扯到磁盘的IO,传统磁盘IO又叫缓存IO,效率是很低的,那么为什么效率低呢?我们先来粗略讲讲操作系统的知识。用户空间以及内核空间的概念:我们知道现在操作系统都是采用虚拟存储器。那么对32位操作系统而言,它的寻址空间(虚拟存储空间)

    2026年2月6日
    2
  • 矩阵范数与向量范数关系_矩阵范数的定义

    矩阵范数与向量范数关系_矩阵范数的定义范数是距离在向量和矩阵上的推广,在研究收敛性、判断矩阵非奇异等方面有广泛应用。本节包括以下内容:(1)向量范数;(2)矩阵范数;(3)从属范数;(4)谱半径;(5)矩阵的非奇异条件。1向量范数从向量到实数的映射/函数。定义(1)条件:非负性、齐次性、三角不等式(∥x+y∥≤∥x∥+∥y∥\|x+y\|\leq\|x\|+\|y\|)。

    2026年1月24日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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