前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java学习之基础语法篇

Java学习之基础语法篇

作者头像
全栈程序员站长
发布2021-12-13 08:18:12
5060
发布2021-12-13 08:18:12
举报
文章被收录于专栏:全栈程序员必看

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

java 学习之路

0x00 前言

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

0x01 java加载机制

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

0x02 第一个程序

这里直接来复制一段代码

代码语言:javascript
复制
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 变量定义

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

格式:

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

代码语言:javascript
复制
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 类型转换

自动类型转换
代码语言:javascript
复制
public static void main(String[] args) {
        int a =1;
        byte b = 2;
        int c =a+b;
        System.out.println(c);
    }

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

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

强制类型转换

转换格式:

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

代码语言:javascript
复制
int i = (int)1.5

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

0x05 赋值运算符

赋值运算符

赋值运算符

解释

=

赋值

+=

加等于

-=

减等于

*=

乘等于

/=

除等于

%=

取模等于

比较运算符

比较运算符

解释

==

等比两边变量的值

<

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

| 对比左边的值是否大于右边的值 = | 对比左边的值是否大于或等于右边的值 <= | 对比左边的值是否小于或等于右边的值 != | 如果两边的数据不相等结果为true

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

逻辑运算符

逻辑运算符

解释

&&

两边结果为ture结果则才tue

||

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

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

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

0x06 方法定义

方法定义格式:

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

代码语言:javascript
复制
返回值类型:void类型为无类型,所以如果定义返回值类型为void,reurn不需要填写

方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法。
参数列表: 可填写传入参数 参数前面必须携带参数变量类型。

return:方法结束。返回值类型是void,如果在返回值定义其他类型,return返回的结果也必须是返回值类型所填写的类型
代码语言:javascript
复制
public static void main(String[] args) {
       show(); 
    }
    public static void show(){
        System.out.println("方法");
    }

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

定义方法注意事项

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

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

0x07 流程控制语句

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

if判断

语法:

代码语言:javascript
复制
if (关系表达式){
    语句体;
}else{
    语句体;
}
执行流程

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

代码语言:javascript
复制
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 语句格式:

代码语言:javascript
复制
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}

执行流程:

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

代码语言:javascript
复制
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循环语句格式:

代码语言:javascript
复制
for(初始化表达式;布尔表达式;步进表达式){
    循环体;
}

执行流程:

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

代码语言:javascript
复制
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循环语句格式:

代码语言:javascript
复制
初始化表达式
while(布尔表达式){
循环体
步进表达式
}
代码语言:javascript
复制
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格式:

代码语言:javascript
复制
初始化表达式
do{
循环体
步进表达式
}while(布尔表达式);
代码语言:javascript
复制
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 数组存储的类型[长度];

代码语言:javascript
复制
数组定义格式详解:
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。

[] : 表示数组。

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

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

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

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

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

int[] arr = new int[3];

方式二格式:

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

方式三格式:

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

访问数组

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

索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素。

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

数组名[索引]

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

数组名.length

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

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

数组遍历

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

代码语言:javascript
复制
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]);

        }
    }

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

数组传递

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

代码语言:javascript
复制
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.cn/119959.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java 学习之路
    • 0x00 前言
      • 0x01 java加载机制
        • 0x02 第一个程序
          • 0x03 数据类型
            • 0x04 变量定义
              • 0x05 赋值运算符
                • 0x06 方法定义
                  • 0x07 流程控制语句
                    • 0x08 数组
                      • 0x09 结尾
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档