java基本语法1

1. 基础知识

1.1 关键字

含义:被java赋予了特殊含义,做专门用途的字符串
在这里插入图片描述
和关键字相关的一个概念是保留字:目前java版本没有使用,未来可能会用做关键字,如future、goto等

1.2 标识符

凡是可以自己起名字的都可以叫做标识符,如变量名、类名等
在这里插入图片描述
在这里插入图片描述

1.3 变量

java中变量需要提前进行声明,格式为 数据类型 值,比如int i=2。这里int是数据类型,i是变量;也可以int i,先不赋值,仅声明,之后再i = 2进行赋值;当声明多个变量时,也可以采用如下两种方式
在这里插入图片描述
在这里插入图片描述
注意,下面这种方式,仅仅对j进行了赋值,但没有对i进行赋值(但是已经声明变量),故println(i)时编译会报错
在这里插入图片描述

1.3.1 数据类型

变量的类型-按数据类型分:
在这里插入图片描述

1.3.1.1基本数据类型

在这里插入图片描述
这里需要注意,声明long类型的变量,后面要加l或者L,如long i = 123l
在这里插入图片描述
这里需要注意,声明float类型的变量,后面要加f或者F,如float i = 123.34f
在这里插入图片描述
注意:这里的char并不是python中的字符串string,char首先只能用单引号,不能用双引号。其次char指的是a、b、1、2这样的单字符,char i='ab’这样写就会报错。ab其实是字符串,所以可以说字符串是由多个char构成的。字符串不属于基本数据类型,其属于引用数据类型-类(class),下一小节会讲。

在这里插入图片描述
注意:java中的boolean和python有所不同,java中的true和false都是小写,python首字母大写。
以上为8中基本数据类型:byte/short/int/long/float/double/boolean/char

基本数据之间是可以进行转化的,如下图:
在这里插入图片描述

  • 转化:
int i =1;
long j = 2;
j = i; //  赋值操作,由于两边类型不一致,系统会先将i从int类型变成j对应的long类型
i = (int)j ; // 高精度向低精度转化:强制转换,(int)表示将j强制转换成int类型。
// 赋值操作不改变i和j的类型,赋值结束后,i依然是int类型,j依然是long类型
  • 运算:
char i = '2';
int j = 1;
int res = i + j; //char会先转换成int类型(用其相对应的ASCII码)

1.3.1.2 引用数据类型

在这里插入图片描述
在这里插入图片描述
这和python是一样的。任何语言,字符串都放在一个常量区。但是这里要区别下python中的int类型。python中对int做了优化,对于简单的int,如1、2、3这些被放在缓存区(类似于常量区),故a=1和b=1的id是一样的,但是a=12345和b=12345的id不一样。
此外需要注意的是String首字母是大写,且值要用双引号引起来,不能用单引号,区别于char
当基本数据类型与String进行运算时,基本数据类型会首先转换成String。

1.4 运算符

  • 算数运算符
    在这里插入图片描述
    注意:在除法运算上,java和python2一样,int / int,如果除不尽,则只保留整数,如5/2结果为2,而不是2.5
    此外++i和i++是不一样的。++i先加后运算;i++先运算后加。如
int i = 0;
int k = ++ i; //最终k为1,类似于i = i + 1; k = i
int k = i ++; // 类似于k = i; i = i +1
  • 注意的问题:

    • 如果对负数取余,可以忽略除数的符号,如5%-2。但被除数的符号不可省略,取余的结果不一定总是整数。如-5%2,结果为-1
    • 整数之间相处,结果只保留整数部分,舍弃小数部分。
  • 赋值运算符
    在这里插入图片描述

  • 扩展运算符

short s = 1;
s = (short)(s + 3) // 变量参与运算时,java程序不知道该变量运算结束后是否超出变量范围,因此会先将变量转换成一个更大的长度。因此本例中(s+3)的结果为int,如果直接赋值给s,就会报错(从int转换成short会损失),因此需要强制转换。
// 上述转换操作并不针对所有情况,如果s初始化为int,则s+3时不需要强制转换,即不用自动转换成一个更大的长度。自动转换适用于short、byte、char
s += 3 //使用扩展符时,变量参与运算时会把结果自动强制转化成当前变量类型。

  • 比较运算符
    在这里插入图片描述
  • 逻辑运算符
    在这里插入图片描述
    在这里插入图片描述
  • 位运算符
    位运算符直接对二进制进行运算
    在这里插入图片描述
    >>为有符号右移,>>>无符号右移,二者的原理如下:
    在这里插入图片描述
  • m<<n表示将m的二进制向左移动n位,后面(低位)补n个0,结果等价于 m 2 n m*2^n ;
  • m>>n表示将m的二进制向右移动n位,前面(高位)补n个0(正数补0)或1(负数补1),结果等价于 m 2 n m*2^{-n}
  • m>>>n表示将m的二进制向右移动n位,前面(高位)补n个0(无论正负),结果等价于 m 2 n |m*2^{-n}| ,即正数的有符号右移
  • 位运算符中的&、|、^要与逻辑运算符中的&、|、^区分,逻辑运算符的结果是true或者false,位运算符的结果仍然是一个数,其原理如下:
    在这里插入图片描述
    在这里插入图片描述
  • 反码:即对应的二进制取反(0变成1,1变成0)。正数二进制取反码后加1(加1称为补码),即得到相应负数的二进制。因此~6=-7(~6+1即得到-6)。对应的,负数的二进制减1取反码即得到相应的正数二进制。
    在这里插入图片描述
  • 三元运算符(三目表达式)
    格式:(条件表达式)? 表达式1:表达式2;
    如果条件表达式为真,则结果为表达式1的结果;如果条件表达式为假,则结果为表达式2的结果。
    在这里插入图片描述
  • 运算符的优先级
    在这里插入图片描述

1.5 程序流程控制

  1. 顺序结构
  2. 分支结构
  3. 循环结构
  • 顺序结构:代码从上到下依次执行
  • 分支结构:if和switch条件句
    if条件句的三种格式:
    1> 只有if:
    在这里插入图片描述
    例子:
    在这里插入图片描述
    2> if…else
    在这里插入图片描述
    在这里插入图片描述
    3> if…else if…else
    在这里插入图片描述
    在这里插入图片描述
    switch语句结构:
    在这里插入图片描述
    在这里插入图片描述
  • 注意:
    • switch(表达式)中表达式的返回值必须是以下几种类型:byte、short、char、int、String、枚举
    • default子句是可选的,相当于else,当没有匹配的case时,执行default
    • case子句中的值必须是常亮,且所有case子句中的值应该是不同的。
    • break语句用来在执行完一个case分支后使程序跳出switch语句块。如果没有break,程序会顺序执行到switch结尾。(break是必须写的,不然程序会从case匹配位置一直往下执行到出现break)。如下例,结果为1 2 3
      在这里插入图片描述
      在这里插入图片描述
  • 循环结构包括三种:for循环、while循环、do…while循环
    1> for循环:
    在这里插入图片描述
    在这里插入图片描述
    从上例可以看到++i和i++没有区别
    2> while循环
    在这里插入图片描述
    在这里插入图片描述
    3>do…while
    在这里插入图片描述
    在这里插入图片描述
    do…while先执行do,然后再判断是否满足条件
  • 特殊控制语句:
    • break:终止循环
    • continue:结束本次循环,进入下一次循环

1.6 数组

java中数组更像是python中的列表。

1.6.1 一维数组

  • 声明方式:type[] 变量 ; 或者type 变量[]
int a[];
// int[] a;
  • 初始化方式:
  1. 动态初始化:数组声明且为数组元素分配空间与赋值操作分开进行
int arr[] = new int[3]; // 为数组申请3个元素,虽为动态初始化,但是初始化时已经为数组赋值了一个默认值。对于int默认是0
arr[0] = 3;//该代码是赋值操作,其中arr[0]是根据索引取出响应值的操作
arr[1] = 2;
arr[2] = 5;
  1. 静态初始化:在定义数组的同时就为数组元素分配空间并赋值
int arr[] = new int[]{1, 2, 3};
// int[] arr = {3, 9, 8};
// int arr[] = {1, 2, 3};

以下为以为数组几种不同的初始化方式:
在这里插入图片描述
arr.length可以看到数组的长度

1.6.2 多维数组

多维数组都是相似的,故以二维数组为例讲解
在这里插入图片描述
注释起来的代码表示该代码时错误的,不符合语法规范

发布了111 篇原创文章 · 获赞 113 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43178406/article/details/103901753