二.Java基本语法(一)

2021/9/20 11:07:24

本文主要是介绍二.Java基本语法(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.关键字和保留字

  1. 关键字

定义:被Java语言赋予了特殊含义,用作专门用途的字符串(单词)

特点:关键字中所有字母都为小写

  1. 保留字

现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字

goto、const

2.标识符

  • java对各种变量、方法和类等要素命名是要使用的字符序列称为标识符
  • 即凡是自己可以起名字的地方都叫标识符
  • 定义合法标识符规则:
    • 有26个英文字母大小写,0-9,_或$组成
    • 数字不可以开头
    • 不可以使用关键字和保留字,但能包含关键字和保留字
    • Java中严格区分大小写,长度无限制
    • 标识符不能包含空格
      【 JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的
      字母的含义:可以表示英文、汉字等等。】

3.数据类型

Java是一种强类型语言,每个变量都必须声明其类型。

1.强弱类型语言

强类型语言也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。

   Java、 .NET、 C++等都是强制类型定义的。也就是说,一旦一个变量被指定了某个数据类型,如果不经过转换,那么它就永远是这个数据类型了。
   安全性高,运行效率相对较慢,鱼和熊掌不可兼得!强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。

与其相对应的是弱类型语言。

  弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb, php等就属于弱类型语言·
  在VBScript中,可以将字符串‘12’和整数3进行连接得到字符串‘123’,也可以把它看成整数123,而不需要显示转换。是不是十分的随便,我们Java就不是这样的。但其实它们的类型没有改变, VB只是在判断出一个表达式含有不同类型的变量之后,自动在这些变量前加了一个clong()或(int)()这样的转换函数而已。能做到这一点其实是归功于VB的编译器的智能化而已,这并非是VB语言本身的长处或短处。

2.数据类型

Java的数据类型分为两大类:基本类型(primitive type)和引用类型 (reference type)

3.整型拓展

十进制,八进制,十六进制转化

//整型
int i=10;
int i2=010;
int i3=0x10;
System.out.println(i);//10
System.out.println(i);//8
System.out.println(i);//16

4.浮点型拓展

浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。
如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

public static void main(String[] args) {
floatf = 0.1f;
doubled = 1.0/10;
System.out.println(f==d); //fal se
floatd1 = 2131231231f;
floatd2 = d1+1;
if(d1==d2) {
System.out.println("d1==d2") ;
}el se{
System.out.println("d1! =d2") ;
}
}

主要理由:

由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001 这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。

最好完全避免使用浮点数比较 !
大数值: Java.math下面的两个有用的类: BigInteger和BigDecimal,这两个类可以处理任意长度的数
值。 BigInteger实现了任意精度的整数运算。 BigDecimal实现了任意精度的浮点运算。
浮点数使用总结:

  • 默认是double
  • 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需
    要使用BigDecimal类。
  • 避免比较中使用浮点数

5.字符型拓展

单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的, “A”表示一个字符串。

char 类型用来表示在Unicode编码表中的字符。 .

Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;

public static void main(String[] args) {
  char c1 = 'a' ;
  char c2 = '中' ;
  System.out.println(c1) ;
  System.out.println((int) c1) ; //97
  System.out.println(c2) ;
  System.out.println((int) c2) ; //20013
}

Java 语言中还允许使用转义字符 ‘’ 来将其后的字符转变为其它的含义,有如下常用转义字符:

  • \b退格
  • \n 换行
  • \r回车
  • \t制表符

6.布尔型拓展

boolean类型(一位,不是一个字节),就是0|1

boolean类型有两个值, true和false,不可以 0 或非 0 的整数

boolean 类型用来判断逻辑条件,一般用于程序流程控制。

if ( is && !un ) {. . . . }

4.类型转换

由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。

整型、实型(常量)、字符型数据可以混合运算。

运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级(根据容量来看)。

低 ------------------------------------> 高
byte, short, char—> int —> long—> float —>double

数据类型转换必须满足如下规则:

  • 不能对boolean类型进行类型转换。
  • 不能把对象类型转换成不相关类的对象。
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte) i ;

因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

1.自动类型转换

自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。

例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

2.强制类型转换

强制类型转换,又被称为造型,用于显式的转换一个数值的类型.

在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

强制类型转换的语法格式: (type) var ,运算符“()”中的type表示将值var想要转换成的目标数据类型。 条件是转换的数据类型必须是兼容的。

3.常见错误和问题

1 . 操作比较大的数时,要留意是否溢出,尤其是整数操作时;

public static void main(String[] args) {
int money = 1000000000; //10亿
int years = 20;
int total = money*years; //返回的是负数
long total 1 = money*years; //返回的仍然是负数。 默认是i nt,因此结果会转成int值, 再转成long。 但是已经发生了数据丢失
long total 2 = money*((long) years) ; //先将一个因子变成l ong,整个表达式发生提升。全部用l ong来计算。
System.out.println(total ) ;
System.out.println(total 1) ;
System.out.println(total 2) ;
}
  1. L和l 的问题:
    • 不要命名名字为l的变量
    • long类型使用大写L不要用小写

5. 变量

  1. 变量的概念:

    • 内存中的一个存储区域

    • 该区域的数据可以在同一类型范围内不断变化

    • 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

  2. 变量的作用:

    • 用于在内存中保存数据
  3. 使用变量注意:

    • Java中每个变量必须先声明,后使用
    • 使用变量名来访问这块区域的数据
    • 变量的作用域:其定义所在的一对{ }内
    • 变量只有在其作用域内才有效
    • 同一个作用域内,不能定义重名的变量
  4. 声明变量

    • 语法: <数据类型> <变量名称>
    • 例如: int var;
  5. 变量的赋值

    • 语法: <变量名称> = <值>
    • 例如: var = 10;
  6. 声明和赋值变量

  • 语法: <数据类型> <变量名> = <初始化值>
  • 例如: int var = 10;
  1. 变量的分类

    变量根据作用域可划分为三种:

    • 类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
    • 实例变量(成员变量: member variable):独立于方法之外的变量,不过没有 static 修饰。
    • 局部变量(lacal variable):类的方法中的变量。

局部变量

方法或语句块内部定义的变量。生命周期是从声明位置开始到”}”为止。

在使用前必须先声明和初始化(赋初值)。

局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

实例变量

方法外部、类的内部定义的变量。

从属于对象,生命周期伴随对象始终。

如果不自行初始化,他会自动初始化成该类型的默认初始值

(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

静态变量

使用static定义。

从属于类,生命周期伴随类始终,从类加载到卸载。

如果不自行初始化,他会自动初始化成该类型的默认初始值

(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

常量
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。

所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

常量名一般使用大写字符。
程序中使用常量可以提高代码的可维护性。例如,在项目开发时,我们需要指定用户的性别,此时可以定义一个常量 SEX,赋值为 "男",在需要指定用户性别的地方直接调用此常量即可,避免了由于用户的不规范赋值导致程序出错的情况。

变量的命名规范
1 . 所有变量、方法、类名:见名知意
2. 类成员变量:首字母小写和驼峰原则 : monthSalary
3. 局部变量:首字母小写和驼峰原则
4. 常量:大写字母和下划线: MAX_VALUE
5. 类名:首字母大写和驼峰原则: Man, GoodMan
6. 方法名:首字母小写和驼峰原则: run(), runRun()



这篇关于二.Java基本语法(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程