Java基础语法(一)

Updated on in Java with 0 views and 0 comments

Java概述

Java跨平台原理

  1. 在不同操作系统上运行Java程序,只需要安装与该操作系统对应的Java虚拟机JVM),这样可以实现同一个Java程序在不同平台上运行,也就是Java的跨平台原理。

JRE与JDK

  1. JREJava Runtime Environment):Java程序运行时的环境,包含JVM和运行时所需的核心类库
  2. JDKJava Development Kit):Java程序开发工具包,包含JRE和开发人员所使用的工具,其中开发工具包括编译工具javac.exe运行工具java.exe

JDK的安装目录

目录名称说明
bin存放了JDK的各种工具命令javac和java在此目录中
conf存放了JDK的相关配置文件
include存放了一些平台特定的头文件
jmods存放了JDK的各种模块
legal存放了JDK各模块的授权文档
lib存放了JDK工具的一些补充JAR包

基础语法

注释

  1. 单行注释

    格式://注释信息

  2. 多行注释

    格式:/*注释信息*/

  3. 文档注释

    格式:/**注释信息*/

关键字

  1. 关键字:Java语言中赋予了特殊含义的单词
  2. 关键字的特点
    • 关键字的字母全部小写
    • 常用的代码编辑器,针对关键字有特殊的颜色标记

常量

  1. 常量概述:在程序运行中,其值不可用发生改变的量。

  2. 常量的分类

    常量类型说明
    字符串常量用双引号括起来的内容
    整数常量不带小数的数字
    小数常量带小数的数字
    字符常量用单引号括起来的内容
    布尔常量布尔值(true,false),表示真假
    空常量一个特殊的值,空值(null)

数据类型

  1. Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。

    数据类型.png

  2. 数据类型与内存占用

    数据类型内存占用
    byte1
    short2
    int(整数默认)4
    long8
    float4
    double(浮点数默认)8
    char2
    boolean1

变量

  1. 变量概述:在程序运行过程中,其值可以发生改变的量。

  2. 变量的定义

    格式:数据类型 变量名 = 变量值;

    范例:int a = 10;

  3. 变量使用的注意事项

    • 变量不能重复定义
    • 变量使用前必须初始化
    • 在对float类型的变量进行赋值时,需要在浮点数后加F,因为浮点数默认是double类型,否则会提示超出数据范围。

标识符

  1. 标识符概述:就是给类,方法,变量等起名字的符号。
  2. 标识符定义规则
  • 由数字、字母、下划线(_)和美元符($)组成
  • 不能以数字开头
  • 不能是关键字
  • 区分大小写
  1. 常见命名约定

    • 小驼峰命名法:方法、变量

      • 约定1:标识符是一个单词时,首字母小写
      • 约定2:标识符由多个单词组成时,第一个单词首字母小写,其他单词首字母大写
    • 大驼峰命名法:类

      • 约定1:标识符是一个单词时,首字母大写
      • 约定2:标识符由多个单词组成时,每个单词的首字母大写

类型转换

  1. 自动类型转换

    把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。

    自动类型转换.png

  2. 强制类型转换

    把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。

    • 格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
    • 范例:int k = (int)88.88;

运算符

算术运算符

运算符与表达式
  • 运算符:对常量或变量进行操作的符号

  • 表达式:用运算符把常量或变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。

    符号作用
    +
    -
    *
    /
    %取余
    • 整数相除只能得到整数,要得到小数,必须要有浮点数的参与。
字符的+操作
  1. 当字符之间进行 + 操作时,取字符所对应的ASCII码值进行运算。

  2. 算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动提升。此时与表达式对应的变量(比如a = b + c,a和b + c的类型需相同)要求与表达式同类型,否则会提示不兼容。

    提升规则:

    • byte类型,short类型和char类型将被提升到int类型。

    • 整个表达式的类型自动提升到表达式中最高等级操作数同样的类型。

      等级顺序:byteshortchar -> int -> long -> float -> double

字符串的+操作
  1. 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算
  2. 在“+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算符。(例如1+2+“abc”的结果为3abc),当连续进行“+”操作时,从左到右逐个执行。

赋值运算符

符号作用
=赋值
+=加后赋值
-=减后赋值
*=乘后赋值
/=除后赋值
%=取余后赋值
  • 注意事项:扩展的赋值运算符隐含了强制类型转换。

逻辑运算符

符号作用
&逻辑与
|逻辑或
^逻辑异或
!逻辑非
短路逻辑运算符
符号作用说明
&&短路与作用和&相同,但是有短路效果
||短路或作用和|相同,但是有短路效果

注意事项:

  • 逻辑与&:无论左边真假,右边都要执行。

    短路与&&:如果左边为真,右边执行;如果左边为假,右边不执行。

  • 逻辑或|:无论左边真假,右边也要执行。

    短路或||:如果左边为假,右边执行;如果左边为真,右边不执行。

三元运算符

  1. 格式:关系表达式 ?表达式1:表达式2;

    范例:a > b ? a : b;

  2. 计算规则:

    • 首先计算关系表达式的值。
    • 如果值为true,表达式1的值就是运算结果。
    • 如果值为false,表达式2的值就是运算结果。

数据输入

  1. 使用Scanner进行数据输入

    • 使用步骤

      • 导包

        import java.util.Scanner;
        //导包的动作必须出现在类定义之前
        
      • 创建对象

        Scanner sc = new Scanner(System.in);
        
      • 接收数据

        int i = sc.nextInt();
        

流程控制语句

  1. 流程控制语句分类:
    • 顺序结构
    • 分支结构(ifswitch
    • 循环结构(forwhiledo...while

顺序结构

  1. 顺序结构是程序中最简单最基本的流程控制,没有特点的语法结构,按照代码的先后顺序,依次执行。

分支结构

if语句
  1. if语句格式:

    if(关系表达式){
        语句体1;
    }
    else if(关系表达式2){
        语句体2;
    }
    ...
    else{
        语句体n+1;
    }
    
switch语句
  1. switch语句格式:

    switch(表达式){
        case 值1:
            语句体1;
            break;
    
        case 值2
            语句体2;
            break;
        ...   
        default:
            语句体n+1;
            [break;]
    }
    
  2. 格式说明

    • 表达式的取值为byteshortintcharJDK5以后可以是枚举类型JDK7以后可以是String
    • break:表示中断,用来结束switch语句。
  3. 注意事项:在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况下,向下运行,直到遇到break,或者整体switch语句结束。

循环语句

for循环语句
  1. for循环语句格式:

    for(初始化语句;条件判断语句;条件控制语句){
        循环语句;
    }
    
while循环语句
  1. while循环语句格式:

    初始化语句;
    while(条件判断语句){
        循环体语句;
        条件控制语句;
    }
    
do...while循环语句
  1. do...while循环语句格式

    初始化语句;
    do{
        循环体语句;
        条件控制语句;
    }while(条件判断语句);
    
跳转控制语句
  1. continue:用在循环中,基于条件控制,跳过某次循环内容的执行,继续下一次的执行。
  2. break:用在循环中,基于条件判断,终止循环体内容的执行,也就是结束当前的整个循环。
Random
  1. 作用:产生一个随机数。

  2. 使用步骤:

    • 导包

      import java.util.Random;
      
    • 创建对象

      Random r = new Random();
      
    • 获取随机数

      int number = r.nextInt(10);
      //获取数据的范围为(0,10),包括0,不包括10
      

数组

数组概述

什么是数组

  1. 数组(array)是一种用于存储多个相同类型数据的存储模型。

数组的定义格式

  1. 数组的定义格式

    • 格式一:数据类型[ ] 变量名
    • 定义了一个int类型的数组,数组名是arr
    • 格式二:数据类型 变量名[ ]
    • 定义了一个int类型的变量,变量名为arr[ ]
  2. 一般情况下使用格式一进行数组定义。

数组初始化

动态初始化

  1. 初始化时只指定数组长度,由相同为数组分配初始值。
  2. 初始化格式
    • 格式:数据类型[ ] 变量名 = new 数据类型[数组长度];
    • 范例:int [] arr = new int [3];(new为数组申请内存空间)

静态初始化

  1. 初始化时指定每个数组元素的初始值,由系统决定数组长度。
  2. 初始化格式
    • 格式:数据类型[ ] 变量名 = new 数据类型[ ]{数据1,数据2,数据3,....};
    • 范例:int [] arr = new int[]{1,2,3};

数组元素访问

  1. 数组变量访问方式

    • 格式:数组名
  2. 数组内部保存的数据的访问方式

    • 格式:数组名[索引] (索引从0开始)
  3. 数组在初始化时,会为存储空间添加默认值

    • 整数:默认值0
    • 浮点数:默认值0.0
    • 布尔值:默认值false
    • 字符:默认值是空字符
    • 引用数据类型:默认值是null

内存分配

  1. 栈内存:存储局部变量(定义在方法中的变量,使用完毕后立即消失)

  2. 堆内存:存储new出来的内容(实体对象

    每一个new出来的东西都有一个地址值,使用完毕后会在垃圾回收器空闲时被回收。

数组操作常见问题

  • 索引越界:访问了数组中不存在的索引对应的元素,造成索引越界的问题。
  • 空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常。
  • null:空值,引用数据类型的默认值,表示不指向任何有效对象。

标题:Java基础语法(一)
作者:wangdj
地址:https://dblog.cool/articles/2024/10/23/1729692535587.html