Java自学笔记(二)——Java基本语法

本博客java自学系列,将记录本人通过尚硅谷java全套网络视频学习java的过程。主要将学习过程中的一些重要的知识点总结归纳下来,巩固自身所学,并与大家分享。但出于我个人时间与精力,并没有面面俱到的介绍,而且注重整体框架,且额外挑出一些个人学习中较为薄弱的部分写了上来。每篇博客涉及到的点都会在开篇目录进行总览。相关学习资料的获取请查看自学笔记(一)的介绍。

java基本语法

    • 1.关键字与保留字
    • 2.标识符
    • 3.基本数据类型
      • (1)数据类型的分类及介绍
      • (2)基本数据类型之间的自动转化
      • (3)基本数据类型之间的强制转化
      • (4)字符串类型:String
    • 4.运算符

1.关键字与保留字

在java语言中一些单词被赋予了特殊含义,用作专门的用途,自己命名时要避开关键字与保留字

  • java保留字
    语言中已经定义过的字,当前不一定被使用,但有可能未来版本会作为新的关键字。只有两个:constgoto
  • java关键字
    Java自学笔记(二)——Java基本语法_第1张图片
    Java自学笔记(二)——Java基本语法_第2张图片

2.标识符

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符,简单来说就是可以自己起名字的地方。

  • 标识符命名规则
    (1)java区分大小写
    (2)不可与关键字、保留字重名
    (3)数字不能开头,中间不能有空格
    (4)只能由英文大小写、数字、下划线、$组成

  • 标识符命名的规范化
    (1)包名:多单词组成时所有字母都小写:xxxyyyzzz
    (2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz,“驼峰命名法”
    (3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz,“小驼峰命名法”
    (4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

3.基本数据类型

(1)数据类型的分类及介绍

Java自学笔记(二)——Java基本语法_第3张图片
此处只对基本数据类型进行介绍

  • 整型Java自学笔记(二)——Java基本语法_第4张图片
    <1>声明long型变量时,必须以“l”或“L”结尾,否则变量类型自动默认为int。
    <2>整型的常量的默认数据类型也为int,即随便与一个整数进行运算,运算中这个整数是当作int进行的类型转换等。

  • 浮点型
    Java自学笔记(二)——Java基本语法_第5张图片
    <1>声明float型变量时,必须以“f”或“F”结尾,否则变量类型自动默认为double。
    <2>浮点型的常量的默认数据类型也为double,即随便与一个整数进行运算,运算中这个整数是当作double进行的类型转换等。

  • 字符型

    类型 占用存储空间 每个字符可存储内容
    char 2字节 java中使用Unicode编码,每个字符可存储:一个字母、一个汉字或其他书面语的一个字符

    char类型的表现形式:
    <1>将单个字符常量用单括号‘’括起来赋值,如:char c1 =‘a’;

    <2>使用转义字符‘\’(称为反斜杠)将紧跟其后的字符转变为特殊字符常量,如:char c2 = ‘\n’,表示换行。

    <3>直接使用Unicode编码赋值,‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。

    char变量是可以进行运算的,因为按照Unicode编码,每个字符都有对应一个数。

  • 布尔型

    数据类型 占用存储空间 取值
    boolean 1bit(位) 只能为true或者flase(不可赋值0或1,不可赋值null

    实际编译时,boolean类型变量将被java虚拟机用int数据类型来代替:true用1表示,false用0表示,但不可直接赋值为0或1。
    在这里插入图片描述

(2)基本数据类型之间的自动转化

进行运算时,系统将自动容量小的类型自动转换为容量大的数据类型(容量即表示数的范围,如float容量大于long)然后再进行计算。容量大小关系可表示为:
Java自学笔记(二)——Java基本语法_第6张图片

  • byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
  • boolean类型不能与其它数据类型运算

特殊的,当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型。

(3)基本数据类型之间的强制转化

强制类型转换即自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。但随着容量变小,可能造成精度降低或溢出使用时要加上强制转换符:(),如:

int i = (int) 5.5;//float型被强制转换为int型
System.out.println(i);//输出后结果为5,丢失精度,向下取整

相关面试陷阱
1.byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型

 byte b1 = 10;
 byte b2 = 20;          //整型常量默认是int类型,这里可能产生精度损失
 byte b3 = b1 + b2;     //本行编译报错,根据自动转化规则,b1+b2运算时转化为int类型,b3是byte类型,二者类型不同,所以出错
 byte b4 = (byte)(b1 + b2); //正确,等式右边int型被强制转换为short。

2.在a与b类型不同时,a+=b 不等同于a=a+b

short s1 = 10;
s1 = s1 + 12;          //本行编译报错: 不兼容的类型的赋值,并且从int转换到short可能会有损失
short s2 = 10;
s2 += 12;             //正确,等同于short s2 = (short)(s2 + (short)12);

对于+=这个运算符,我的理解是,+=内隐含了一个强制类型转换的作用,会将等式右边的运算类型强制转换为左边的类型进行计算。

(4)字符串类型:String

String属于应用数据类型里的类,赋值时注意使用双引号""将字符串括住。例如String s = “abc”;

  • String的连接
    String与其他基本数据类型进行运算时,只能使用+进行连接运算,基本数据类型的值将自动转化为String类型,连接结果也是String。

  • String与基本数据类型的切换
    以下只以int和String转化为例,其余数据类型替换相关类即可。
    <1>String ————> int

    方法1:int i1 = Integer.parseInt(s); (推荐)
    方法2:int i2 = Integer.valueOf(s).intValue();

    <2>int ————> String

    方法1:String s1 = “”+i;
    方法2:String s2 = String.valueOf(i);
    方法3:String s3 = Integer.toString(i);

4.运算符

  • 算术运算符
    Java自学笔记(二)——Java基本语法_第7张图片
    注意除号“/”的使用,如果除号“/”两边的数据类型不同,会自动进行强制类型转换成精度高的数据类型,然后再进行运算,对于两边都是整数的情况,直接计算,计算结果向下取整

    取余“%”的使用,常备用于开发中,判断一个数能否被另一个数除尽的情况,例如判断一个数的奇偶。

  • 赋值运算符

    基本的赋值运算符即等号“=”,将等式右边的值赋值给左边的变量,如若类型不一致,可以使用自动类型转换或强制类型转换原则进行处理。

    扩展的赋值运算符有:+=, -=, *=, /=, %=,以第一个为例,a+=b,基本可以等同为a=a+b。但需注意,对于数据类型方面,+=内隐含了一个强制类型转换的作用,会将等式右边的运算类型强制转换为左边的类型进行计算。

  • 关系运算符
    Java自学笔记(二)——Java基本语法_第8张图片
    注意区分“=”与“==”

  • 逻辑运算符
    Java自学笔记(二)——Java基本语法_第9张图片
    短路的意思,即会从左往右逐个判断,左边先执行,根据结果再判断右边是否需要执行而得到一个确定的结果。如&&,若左边已经判断为假,则右边不执行,该表达式的结果确定了为假。

  • 位运算符
    Java自学笔记(二)——Java基本语法_第10张图片
    注意,所有位运算符都是针对整数的二进制逐位进行计算的

  • 三位运算符

    相当于一个if结构的简化
    Java自学笔记(二)——Java基本语法_第11张图片

  • 运算符的优先级
    多个运算符在一起运算时,需要根据运算符优先级进行判断,从高优先级到低优先级依次计算。
    Java自学笔记(二)——Java基本语法_第12张图片
    注意表格最左一列的运算顺序

你可能感兴趣的:(Java自学笔记(二)——Java基本语法)