Java基础语法

Java基础语法,第1张

Java基础语法 Java基础语法

文章目录
  • Java基础语法
    • 二、Java基础语法
      • 2.1 一些必须要知道的常识
      • 2.2 Java里的注释
      • 2.3 数据类型
        • 2.3.1 Java的数据类型分为2大类:
        • 2.3.2 字面量
        • 2.3.3 转义序列
      • 2.4 在数字中增加下划线
      • 2.5 变量初始化
      • 2.6 运算符
      • 2.7 位运算
      • 2.8 类型转换
        • 2.8.1 ==隐式转换==
        • 2.8.2 ==强制转换==
      • 2.9 一元数字提升和二元数字提升
        • 2.9.1 ==一元数字提升(单目运算符)==
        • 2.9.2 ==二元数字提升==
      • 2.10 关键字和标识符
      • 2.11 数组
        • 2.11.1 数组的创建
        • 2.11.2 数组的内存
        • 2.11.3 数组的遍历
      • 2.12 方法
        • 2.12.1 可变参数
        • 2.12.2 参数传递
        • 2.12.3 方法签名和方法重载
        • 2.12.4 栈帧
        • 2.12.5 递归调用
  • **
    • **Java语言基础**

二、Java基础语法 2.1 一些必须要知道的常识
  1. 每一条语句以==";"==结尾;
  2. Java里所说的方法其实就是函数;
  3. 程序的入口为main方法;
  4. 方法必须包含在class内部
  5. public class的名称必须和文件名一致
  6. Java里的{ }的写法,{ 一般写在每行的最后;} 独占一行。
2.2 Java里的注释

Java里有三种注释形式:单行注释、多行注释和文档注释。
文档注释一般用在方法上,内容包含方法的作用、方法的参数及意义、返回值的意义。
大致如下图所示:

Java里的多行注释不能嵌套使用。

2.3 数据类型 2.3.1 Java的数据类型分为2大类:

1.基本类型

  • byte:8bit的整数,1字节,字节型,取值[128,127]
  • short:16bit的整数,2字节,短整型,取值[-32768,32767]
  • int:32bit的整数,4字节,整型,取值[-231,231-1]
  • long:64bit的整数,8字节,长整型,取值[-263,263-1]
  • float:32bit,单精度浮点型,取值[1.40E-45F,3.4028235E38F]
  • double:64bit,双精度浮点数,取值[4.9E-324,1.797693134862315]
  • boolean:布尔型,true、false
  • char:单个16bit的字符。在C语言中是1字节,Java中2字节,所以在Java中可以存储字母,也可以存储汉字。

2.引用类型
引用类型的值是对对象的引用(存储对象的地址,类似C中的指针)

2.3.2 字面量
//字面量
        //整数
        //十进制
        byte a = 123;
        //二进制
        short b1 = 0b11001;
        short b2 = 0B10011;
        //十六进制
        int c1 = 0x78A;
        int c2 = 0x78A;
        int c3 = 0x78a;
        int c4 = 0x78a;
        //long型,以L或l结尾,推荐使用L
        long d = 100L;

        //浮点数
        //float型,以F或f结尾
        float e1 = 12.3F;
        float e2 = 12.3f;
        //double型,以D或d结尾
        //默认的都是double型
        double f1 = 12.3D;
        double f2 = 12.3d;
        double f3 = 12.3;
        //还可以用科学计数法,E或e
        //123.4,1.234 X 10^2
        float g1 = 1.234E2F;
        double g2 = 1.234e2;
        
        //字符串,字符
        char c5 = 'a';
        //String是引用类型
        String str1 = "abcd";
        
        //布尔型
        boolean flag1 = true;
        boolean flag2 = false;
        
        //空值
        //空串,指向一个空的字符串
        String str2 = "";
        //没有指向,空指针
        String str3 = null;
2.3.3 转义序列
  • b:退格
  • t:制表符
  • n:换行
  • f:换页
  • r:回车
  • ":双引号
  • ':单引号
  • :反斜杠
2.4 在数字中增加下划线

Java7中可以给数字添加下划线以增强可读性。

2.5 变量初始化
  • 任何变量在使用前都要初始化(赋值)
  • 实例变量(成员变量)和类变量(加了static的变量),编译器会自动设置初始值。
类型默认初始值byte0short0int0long0Lfloat0.0Fdouble0.0Dchar‘u0000’booleanfalse对象null 2.6 运算符 运算符优先级后缀expr++ expr–一元(单目运算符)++expr –expr +expr -expr ~ !乘除模* / %加减+ -移位>> << >>>关系< > <= >= instanceof等价== !=按位与&按位异或^按位或l逻辑与&&逻辑或ll三目运算符表达式? true:false赋值= += -= *= /= %= &= ^= l= <<= >>= >>>=

注意: 当多个优先级一样的运算符同时出现时按照结合性运算。

  • 表格里优先级从上到下一次降低
  • 只有赋值运算符是从右到左
  • 其他的都是从左到右
    尽量使用小括号来保证运算的顺序。
2.7 位运算
  • << 左移
  • >> 有符号右移(最左边用符号位补齐,原数的最左边的数)
  • >>> 无符号右移(最左边用0补齐)
  • & | ^ 可以用在boolean类型上
  • && || 多了短路功能

短路: 只要运算符左边已经可以判断整个表达式的结果,则右边部分就不会运行了。

public static boolean fun(){
        System.out.println("执行了");
        return true;
    }

    public static void main(String[] args) {
        System.out.println(false && fun());//false
        System.out.println(true && fun());//true 打印 “执行了”
    }
2.8 类型转换 2.8.1 隐式转换

拓宽基本类型,数据范围小的可以自动转换为数据范围大的。

2.8.2 强制转换

窄化基本类型,数据范围大的转换为数据范围小的可能会丢失精度和范围,因此需要强制转换,比如long类型的转int型的:

long a = 10L;
int b = (long) a;

注意:short转char、byte 和char转byte、short

2.9 一元数字提升和二元数字提升 2.9.1 一元数字提升(单目运算符)

将byte、char、short类型的一元数字自动提升为int型。
1.数组的索引、2.创建数组时的数组长度、3.一元运算符+和-(在整数中为正和负,在字符里会转换为int型的ASCll码)、4.按位取反~、5.位移运算符(<<、>>、>>>)这些情况下会执行一元数字提升。

2.9.2 二元数字提升

1.如果一个数字是double/float/long型,则另一个也会转为double/float/long型;否则两个数字都转换为int型。
2.会执行二元数字提升的情形:
* / % + - < <= > >= == != & ^ | ?:

2.10 关键字和标识符
  • 关键字: abstract、continue、for、new、switch、assert、default、goto、package、synchronized、boolean、do、if、private、this、break、double、implements、protected、throw、byte、else、import、public、throws、case、enum、instanceof、return、transient、catch、extends、int、short、try、char、final、interface、static、void、class、finally、long、strictfp、volatile、const、float、native、super、while
  • 标识符: 变量名、方法名、类名
    1.标识符的命名规则:不限长度的Java字母Java数字序列,必须以Java字母开头;不能使用关键字;不能使用字面量true,false,null
    2.Java字母:ASCII 中的 AZ、az,美元符($),下划线(_),中文,韩文,日文等字符;
    3.Java数字:ASCll中的数字0~9。
2.11 数组 2.11.1 数组的创建
        int[] arr1;
        int[] arr2 = {};//空数组
        int arr3[] = {};//空数组
        
        //定义数组时指定数组元素
        int[] arr4 = new int[] {1,2,3,4};
        int[] arr5 = {1,2,3,4};//语法糖
        
        //定义数组时指定数组长度
        int[] arr6 = new int[6];
        
        //多维数组
        int[][][] arr7;

注意: 在Java中,字符数组不等于字符串!

  • 字符数组:char[]
  • 字符串:string

如果直接打印数组,则会得到==[I@6d6f6e28== ,这不是数组的地址,而是hash值。

2.11.2 数组的内存

执行一个方法,Java就会在栈空间中分配一个栈帧。

    int[] array = { 11,22,33};


Java中的数组属于引用类型,数组元素存储在堆空间中。首元素的内存地址就是数组的地址。
注意: Java中的堆内存申请会自动进行初始化。
Java中取数组元素的原理:随机访问,速度非常快,O(1)。Java底层根据数组下标计算出要取的元素的内存地址,然后根据地址直接到堆内存中读出数据。

2.11.3 数组的遍历
 int[] arr = {1,2,3,4};
 //for循环遍历
 for (int i = 0; i < arr.length; i++) {
   System.out.println(arr[i]);
}
	
 //for-each遍历,缺点是没有数组的下标
 for (int i : arr) {
   System.out.println(i);
}
2.12 方法

Java中的方法其实就是函数。
方法的格式:
修饰符 返回值类型 方法名(参数列表){ 方法体 }

2.12.1 可变参数
public static int sum(int... ints){
        int i = 0;
        for (int j : ints) {
            i += j;
        }
        return i;
    }
  • 可变参数必须是方法中的最后一个参数,形如 int… ints 这样的就是可变参数。
  • 参数个数不受限制。
  • 实际上就是数组,只不过在调用方法时不需要传数组。
  • 可变参数 不传任何值时,为空,而不是null
  • printf底层就是使用的是可变参数。
2.12.2 参数传递
  • 值传递(传值)
    基本类型作为参数;
  • 引用传递(传地址)
    引用类型作为参数;
  • 返回值
    若返回值为基本类型,则返回的是;若返回值为引用类型,则返回的是地址(引用)。
2.12.3 方法签名和方法重载

方法名和参数类型组成方法签名。
同一个类里,不能定义两个相同方法签名的方法;方法重载指的是方法名相同,但方法签名不同,即:

  • 两个方法的参数个数不同
  • 两个方法的参数类型不同
    注意: 重载与方法的返回值类型、参数名称无关!
2.12.4 栈帧

战阵随着方法的调用而创建,随着方法的结束而摧毁,它存储了方法的局部变量信息。

2.12.5 递归调用
  • 递归调用若没有终止,将会一直消耗栈空间,最终导致内存溢出。
  • 必须要有明确的结束递归的条件,叫做边界条件、递归基。
** Java语言基础

**

一、Java的前世今生和自身的特点
二、Java基础语法

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5523702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存