zoukankan      html  css  js  c++  java
  • Java学习之基础语法篇

    java 学习之路

    0x00 前言

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

    0x01 java加载机制

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

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

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

  • 相关阅读:
    利用索引提高SQL Server数据处理的效率
    拆掉思维里的墙摘抄
    QR码和PDF417比较
    保存一个记录到数据库又马上返回ID号
    C#获取当前路径的7种方法
    汉诺塔算法不错,收藏了!
    如何确定Z检验的值(查正态分布表时要注意中间的数字都是面积,最左边一列和最上面一行都是Z值)
    opencv的安装
    SQL事务
    重大财务决策前的思考
  • 原文地址:https://www.cnblogs.com/nice0e3/p/13411301.html
Copyright © 2011-2022 走看看