Java入门-基本语法


今日语录:无论你觉得自我多么了不起,也永远有人比你更强。

一、关键字 VS 标识符 VS 保留字

1、关键字

关键字(keyword) 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中的所有字母为小写 具体哪些关键字:

Java入门-基本语法
image-202110241833150

Java入门-基本语法

2、保留字(reserved word)

Java保留字:现有的Java版本尚未使用,但以后版本可能会被作为关键字使用。注意:自己命名标识符时要避免使用这些保留字。具体哪些保留字:(goto,const)

3、标识符(Identifier)

  • 标识符:Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。技巧:凡是自己可以起名字的地方都叫标识符。比如:类名、变量名、方法名、接口名、包名。。。

  • 标识符的命名规则有哪些?

  1. 由26个英文字母大小写、0-9,_或$组成

  2. 数字不可以开头

  3. 不可以使用关键字和保留字,但能包含关键字和保留字。

  4. Java中严格区分大小写,长度无限制

  5. 标识符不能包含空格

  • 标识符的命名规范有哪些?
  1. 包名:多单词组成时所有字母都小写:xxxyyyzzz

  2. 类名、接口名:多单词组成时,所有单词首字母大写,如:XxxYyyZzz 【大驼峰】

  3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,如:xxxYyyZzz 【小驼峰】

  4. 常量名:所有字母都大写、多单词时每个单词之间用_连接,如:XXX_YYY_ZZZ

注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”

注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

二、变量

1.为什么需要变量

不论是哪种高级程序语言编写程序,变量都是其程序的基本组成单位,该区域的数据可以在同一类型范围内不断变化。比如://变量有三个基本要素(类型+名称+变量值)

2.变量使用注意事项
  • 变量表示内存中的一个存储区域【不同的变量,类型不同,占用的空间大小不同,比如:int 4字节,double就是8个字节】
  • 该区域有自己的名称【变量名】和类型【数据类型】
  • 变量必须先声明,后使用,即有顺序
  • 该区域的数据可以在同一类型范围内不断变化
  • 变量在同一个作用域内不能重名
  • 变量= 变量名+值+数值类型,这一点请大家注意。变量三要素

三、数据类型

定义

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。

Java入门-基本语法

  • java数据类型分为两大类型:基本数据类型和引用类型
  • 基本数据类型有8种,数值型[byte、short、int、long、float、double] 、char、boolean
  • 引用类型[类、接口、数组]

整型

  • 整型的类型

    Java入门-基本语法
  • 使用细节

    1. Java各整数类型有固定的范围和字段长度,不受具体OS【操作系统】的影响,所以保证java程序的可移植性
    2. Java的整型常量默认为int型,声明long型常量后需加‘l’或‘L’’
    3. java程序中变量常声明为int型,除非不足以表示大数。才使用long
    4. bit:计算机中的最小存储单位。byte:计算机中基本存储单元,1byte = 8bit.

浮点类型(float,double)

  • 浮点型的分类

    Java入门-基本语法
    • PS:

      1.关于浮点数在机器中存放形式的简单说明:浮点数 = 符号位 + 指数位 + 尾数位

      2.位数部分可能丢失,造成精度损失(小数都是近似值)

  • 使用细节

  1. 与整数类型相似,Java浮点类型也有固定的范围和字段长度,不受具体的OS影响。【float4字节,double8字节】

  2. Java的浮点型常量默认为double型,声明float型常量,需要加’f’或’F’

  3. 浮点型常量有两种表示形式

    十进制数形式:如:5.12  512.0f     .512(必须有小数点)

    科学计数法形式:如:5.12e2[5.12*10的2次方] 5.12E-2 [5.12/10的2次方]

  4. 通常情况下,应使用double型,因为它比float型更精准

  5. 浮点数使用陷阱:如:2.7和8.1 / 3 比较:8.1 / 3–>接近2.7的小数,而不是2.7

字符类型(char)

  • 基本介绍

    字符类型我们可以表示单个字符,字符类型是char,char是两个字节(可存放汉字),多个字符我们用字符串String

  • 使用细节

    1. 字符常量是用单引号(‘’)括起来的单个字符。例如:char c = ‘a’; char b = ‘中’;

    2. Java中还允许使用转义字符”来将其后的字符转变为 特殊字符型常量。

      例如:char c = ‘n’; //’n’表示换行符

    3. 在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。

    4. 可以直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出[97] ->a

    5. char类型是可以直接进行运算的,相当于一个整数,因为它都有对应的Unicode码

  • 字符类型本质探讨

    • 介绍一下字符编码表
    1. 字符型 存储到 计算机中,需要将字符对应的码值(找出来),比如‘a’

      存储:‘a’==>码值97 ==>二进制==> 存储

      读取:二进制==>97==>‘a’==>显示

    2. 字符和码值的对应关系时通过字符编码表决定的(是规定好的)

      ASCII(ASCII编码表 一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用128个)

      Java入门-基本语法

      Unicode(Unicode编码表 固定大小的编码 使用两个字节来表示字符,字母和汉字统一都是占用两个字节,这样浪费空间)->Unicode码 兼容 ASCII码

      utf-8(编码表,大小可变的编码 字母使用1个字节,汉字使用3个字节)

      Java入门-基本语法

      gbk(可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节)

      gb2312(可以表示汉字,gb2312 < gbk)

      big5码(繁体中文,台湾,香港)

布尔类型(boolean)

  • 基本介绍
  1. 布尔类型也叫boolean类型,boolean类型数据只允许取值true 或 false,无 null

  2. boolean类型占1个字节

  3. boolean类型适于逻辑运算,一般用于程序流程控制

    if(条件控制语句)

    while(循环控制语句)

    do-while(循环控制语句)

    for(循环控制语句)

  • 使用细节

    不可以0或非0的整数替代false和true,这点和C语言不同

四、基本数据类型转换

自动类型转换

  • 介绍

    当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换

  • 数据类型按精度(容量)大小排序为:

Java入门-基本语法
  • 使用细节和注意事项
  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
  2. 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,这时系统会报错,反之会进行自动类型转换
  3. (byte、short)和char之间不会相互自动转换
  4. byte,short,char他们三者可以计算,在计算时首先转换为Int类型
  5. boolean不参与转换
  6. 自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型

强制类型转换

  • 介绍

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外需要注意

  • 使用细节
  1. 当进行数据的大小从 大 ->小,就需要使用到强制类型转换

  2. 强制符号只针对于最近的操作数有效,往往会使用小括号提升优先级

    Java入门-基本语法

  3. char类型可以保存int类型的常量值,但不能保存int的变量值,需要强制转换

    Java入门-基本语法

  4. byte和short类型在进行运算时,当作int类型处理

五、String 类型变量的使用

  • 1、String属于引用数据类型

  • 2、声明String使用一对英文的””

  • 3、String可以和8种基本数据类型做运算,且运算只能是连接运算,+符号

六、进制转换

  • 所有数字在计算机底层都以二进制形式存在

    对于整数,有四种表达方式

    1. 二进制(binary),0,1,满2进1,以0b或0B开头;
    2. 十进制(decimal),0-9,满10进1
    3. 八进制(octal):0-7,满8进1,以数字0开头表示。
    4. 十六进制(hex):0-9及A-F,以0x或0X开头表示,此处的A-F不区分大小写,如 0x21AF + 1 = 0X21B0
  • 二进制的使用说明

    Java入门-基本语法

    1. 计算机底层的存储方式:所有数字在计算机底层都以二进制形式存在

    2. 二进制数据的存储方式:所有的数值,不管正负,底层都以补码的形式存储

    3. 原码、反码、补码的说明:正数:三码合一 负数:

  • 3.进制间的转换

Java入门-基本语法

图示二进制转换为十进制

规则:从最低位(右边)开始,将每个位上的数取出来,乘以2的(所在位数-1)次方,然后求和。

同理:八进制 -> 十进制

规则:从最低为(右边开始),将每位上的数取出来,乘以8的(所在位数-1)次方,然后求和。

同理:十六进制 -> 十进制

规则:从最低位开始,将每位上的数取出来,乘以16的(所在位数-1)次方,然后求和。

Java入门-基本语法

图示十进制转换为二进制

Java入门-基本语法

二进制与八进制、十六进制间的转换

二级制 -> 八进制

规则:从低位开始,将二进制每三位为一组,转成对应的八进制数即可

如:0b 01 (1)  111(7)  011(3) = 1 7 3

八进制 -> 二进制

规则:将八进制数每一位,转换成对应的一个3位的二进制数即可。

如:1 7 3 = 0b 01 (1)  111(7)  011(3)

二进制 -> 十六进制

规则:从低位开始,将二进制数 每四位为一组,转换成对应的十六进制数即可

如:0b110(D)0101(5) = 0xD5

十六进制 ->二进制

规则:从低位开始,将十六进制数 每一位对应转换成一个4位的二进制数即可

如:0xD5 = 0b110(D)0101(5)

Java入门-基本语法

七、运算符

概念

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

运算符类型

1.算数运算符

2.赋值运算

3.比较运算符(关系运算符)

4.逻辑运算符

5.位运算符

6.三元运算符

运算符 运算 范例 结果
+ 正号 +3 3
负号 b=2;-b -2
+ 1+1 2
2-1 1
* 2*2 4
/ 4/2 2
% 取模(取余) 7%5 2
++ 自增(放前面):先运算后取值 a=2;b=++a; a=3;b=3;
++ 自增(放后面):先取值后运算 a=2;b=a++; a=3;b=2;
自减(放前面):先运算后取值 a=2;b=–a; a=1;b=1;
自减(放后面):先取值后运算 a=2;b=a–; a=1;b=2;
+ 字符串拼接 “H”+”J” “HJ”

算数运算符

  • 符号
+ - * /  % (前++ (后)++ (前)-- 后(--)
  • 特别说明

    1、//(前)++:先自增1,后运算 //(后)++:   先运算,后自增1 2、//(前)–: 先自减1,后运算 //(后)–:     先运算,后自减1 3、连接符:+:只能使用在String与其他数据类型变量之间使用。


赋值运算符

  • 符号

    = += -= *= /= %=

    ①符号:=

    1. 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。2.支持连续赋值。

② 扩展赋值运算符:+=,-=,*=,/=,%=

  • 特别说明

    【特别说明】

    1、运算的结构不会改变变量本身的数据类型 2、小练习1:开发中希望变量实现+2的操作,几种写法?方式一:num = num + 2; 方式二:num += 2;(推荐)

    小练习2:开发中希望变量实现+1的操作,几种写法?   方式一:num = num + 1;    方式二:num += 1;    方式:num++;(推荐)

    3、运算顺序从右往左

    4、赋值运算符的左边只能是变量,右边可以是常量值、表达式或变量

    5、复合赋值运算符等价于下面的效果

    如:a+ = 3; 等价于 a = a + 3;

    6、复合赋值运算符会进行类型转换

    如:byte b = 2; b += 3;b++;

比较运算符(关系运算符)

  • 符号
运算符 运算 范例 结果
== 相等于 4 == 3 false
!= 不等于 4 != 3 true
< 小于 4 < 3 false
> 大于 4 > 3 true
<= 小于等于 4 <= 3 false
>= 大于等于 4 >= 3 true
instanceof 检查是否是类的对象 “Hello” instanceof String true
  • 特别说明

【特别说明】

1、比较运算符运算结果是boolean类型

2、>  <  >=  <=: 只能使用在数值类型数据之间

3、== 和 !=:不仅可以使用在数值类型数据之间,还可以使用在其它引用类型变量之间 如:Account cct1 = new Account(1000); Account acct2 = new Account(2000); boolean b1 = (acct1 == acct2);//比较两个account是否是同一个账户 boolean 不 = (acct1 != acct2);

逻辑运算符

  • 符号
&  |  &&  ||  !  ^
  • 特别说明

    1.区分 & 与 &&(短路与) **相同点:**①&和&&的运算结果相同 ②当符号左边是true时,二者都会执行符号右边的运算 **不同点:**①当符号左边是false时,&会继续执行符号右边的运算,而&&不会继续执行右边的运算,因此也称为短路与

    2.区分 | 和 ||(短路或)://相同点①:|与||d的运算结果相同 //相同点②:当符号左边是false时,二者都会执行符号右边的运算 //不同点①:当符号左边是true时,|会继续执行符号右边的运算,而||不会继续执行符号右边的运算,因此也被称为短路或。

    3.逻辑运算符操作的都是boolean类型的变量,而且结果也是boolean类型

位运算符

  • 符号
<< >> >>> <<<
运算符 运算 范例
<< 左移 3<<2 = 12 –> 3 * 2 * 2 = 12
>> 右移 3 >> 1 = 1 –> 3 / 2 = 1
>>> 无符号右移 3 >>> 1 = 1 –> 3 / 2 = 1
& 与运算 6 & 3 = 2
| 或运算 6 | 3 = 7
^ 异或运算 6 ^ 3 = 5
~ 取反运算 ~6 = -7
  • 特别说明

    1、位运算符操作的都是整型的数据 2、 [<<] : 在一定范围内,每向左移1位,相当于*2;

    [>>] : 在一定范围内,每向右移1位,相当于/2;

    • 面试题

      你能否写出最高效的2*8的实现方式?答案:2 << 3 或 8 << 1

三元运算符

  • 格式

    (条件表达式)?表达式1:表达式2

如果条件表达式运算结果为true,那么结果显示为表达式1,反之运算结果为表达式2

  • 特别说明

1.结构:(条件表达式?表达式1:表达式2

2.说明 ① 条件表达式的结果为boolean类型 ② 根据条件表达式真或假,决定执行表达式1还是表达式2 如果表达式为true,则执行表达式1 ③ 表达式1和表达式2要求是一致的 ④ 元运算符是可以嵌套使用的

3.凡是使用元表达式的地方都可以改写为if-else, 但是if-else的地方不一定可以改为三元运算符

4.如果程序既可以使用元运算符,又可以使用if-else,建议使用元运算符 原因:简洁、执行效率高

八、运算符优先级

1、运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行

Java入门-基本语法

2、只有单目运算符、三元运算符、赋值运算符是从右向左运算的。

九、流程控制

  • 描述

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句合成能完成一定功能的小逻辑模块。

  • 类型

    顺序结构 :

    1.程序从上而下依次执行,中间没有任何判断和跳转

    分支结构 :

                1. 根据条件,选择性的执行某段代码
    2. 分为 if...else...和switch...case...

    循环结构

    1.根据循环条件,重复执行某些代码

    2.分为for…,do…while…,while三种循环语句

    注:JDK1.5及以上版本,提供了foreach循环,更适合遍历集合,数组元素

分支结构

  • if…else

    • 特别说明
    • 语法格式

      Java入门-基本语法

      1、else结构是可选的,

      2、针对多个条件表达式:

      I. 如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句应该生声明在上面还是下面是无所  谓的。

      II. 如多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚当前应该将哪个结构声明在上面。    III. 如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面,否则,范围小的就没有机会执行呢;    IV. if-else结构是可以相互嵌套的     V. 如果if-else结构中的执行语句只有一行时,对应的{}可以省略。(但是,不建议大家省略)

  • switch…case

    • 特别说明

      ① 根据switch 表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句

      当调用完执行语句之后,则仍然继续向下执行其它case结构中的执行语句,直到遇到break关键字或switch-case语句    末尾为止结束。

      ② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出

      ③ switch-case结构中的表达式,只能是如下6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(Jdk7.0新增) ④ case后边只能声明常量,不能声明范围。⑤ break关键字是可的。⑥ default:相当于if-else结构中的else,default结构是可的。

      Java入门-基本语法
    • 语法格式

      Java入门-基本语法

循环结构

特别说明

循环结构的4个要素 1、初始化条件 2、循环条件 —》是boolean类型 3、循环体 4、迭代条件

  • for循环

    • 语法

      Java入门-基本语法

  • while循环

    • 语法

      Java入门-基本语法

    • 特别说明

      1、写while循环千万小心不要丢了迭代条件,因为一旦丢了,就可能导致死循环 2、我们写程序,一定要避免出现死循环 3、for循环和while循环是可以相互转换的 区别:for循环和while循环的初始化条件部分的作用范围不同

  • do…while…循环

    • 语法

      Java入门-基本语法

嵌套循环典型题录

九九乘法表

Java入门-基本语法

运行效果:

Java入门-基本语法

打印空心金字塔

Java入门-基本语法

运行效果:

Java入门-基本语法

100以内质数输出

Java入门-基本语法

100以内质数输出算法优化

Java入门-基本语法

运行结果:

Java入门-基本语法

break和continue关键字

  • 特别说明

    1、break语句可以指定退出哪一层

    2、label1是标签,名字可由程序员自定义

    3、break后指定到哪个label就退出到哪里

    4、在实际开发中,尽量不要使用标签

    5、如果没有指定break哪一层,默认退出最近的循环体


适用范围 循环使用的作用 相同点
break switch-case 结束当前循环 关键字后面不能声明执行语句
continue 循环结构中 结束当次循环 关键字后面不能声明执行语句

return关键字

  • return语句作为一个无条件的分支,无需判断条件即可发生。
  • return语句主要有两个用途:
    • 1.用来表示一个方法返回的值(假定没有void返回值)
    • 2.指它导致该方法退出,并返回那个值。根据方法的定义,每一个方法都有返回类型,该类型可以是基本类型,也可以是对象类型,同时每个方法都必须有个结束标志,因此,return起到了这个作用。在返回类型为void的方法里面,有个隐含的return语句,因此,在void方法里面可以省略不写。
  • return语句和其他控制结束语句的区别
  • Java中结束语句主要有四类:return,break,continue以及goto。
  • return语句在try-catch-finally中使用情形:(1)若try执行成功后返回,在try和catch里面都执行return语句,这样情况与4相同,但该方法更佳,因为,可以立刻查看出异常的抛出情况。(2)若只需要在try和catch都执行后还需继续执行相关语句,则在try-catch所有语句后执行return语句;(3)若catch执行后返回,则在catch和所有语句后执行return语句;(4)若try执行成功后返回,则在try和全部语句后使用return语句;

十、键盘输入语句

  • Scanner类:简单的文本扫描器,在java.util包里

    Java入门-基本语法

十一、原码、反码、补码

  • 特别说明

    1、二进制的最高位是符号位:0表示整数,1表示负数(口诀:0 -> +  1 ->- )

    2、正数的源码、反码、补码都一样(正数三码合一)

    3、负数的反码 = 它的原码符号位不变,其他位取反(0 ->1   1->0)

    4、负数的补码 = 它的反码 + 1

    负数的反码 = 负数的补码 – 1

    5、0的反码,补码都是0

    6、java没有无符号数,简而言之,java中的数都是有符号的

    7、在计算机运算的时候,都是以补码的方式来运算的

    8、当我们看运算结果的时候,要看他的原码

    例题:2&3

    Java入门-基本语法
    image-20230205170444977

    例题:~-2(-2取反)

    Java入门-基本语法

    例题3:~2 (2的补码取反)

    Java入门-基本语法

小结

  • java程序编写-编译–总结的过程 编写:我们将编写的java代码保存在以“.java”结尾的源文件中 编译:使用java.exe命令编译我们的java源文件,格式:javac 源文件.java 运行:使用java.exe命令解释运行我们的字节码文件,格式:java 类名

  • 在一个java源文件中可以声明多个class,但是,最多只能有一个类声明的public的, 而且要求声明的public类的类名必须与源文件相同。

  • 程序的入口是main()方法,格式是固定的。public static void main(String[] args){}

  • 输出语句 System.out.println();   //先输出后换行 System.out.print();     //输出数据不换行

  • 学习思路

    工作需要

    跳槽,对方要求

    技术控

    1. 看看能否使用传统技术解决

      能解决,但并不完美

      解决不了

    2. 引出我们学习的新技术和知识点

    3. 学习新技术或者知识点的基本语句和基本语法(此时不要考虑细节:学习成本与工作量可能产生冲突)

    4. 快速入门(基本程序-CRUD)

    5. 开始研究技术的注意事项,使用细节,使用规范。如何优化



原文始发于微信公众号(Whisper Coding):Java入门-基本语法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/255392.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!