二.Java基本语法(一)
2021/9/20 11:07:24
本文主要是介绍二.Java基本语法(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.关键字和保留字
- 关键字
定义:被Java语言赋予了特殊含义,用作专门用途的字符串(单词)
特点:关键字中所有字母都为小写
- 保留字
现有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) ; }
- L和l 的问题:
- 不要命名名字为l的变量
- long类型使用大写L不要用小写
5. 变量
-
变量的概念:
-
内存中的一个存储区域
-
该区域的数据可以在同一类型范围内不断变化
-
变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
-
-
变量的作用:
- 用于在内存中保存数据
-
使用变量注意:
- Java中每个变量必须先声明,后使用
- 使用变量名来访问这块区域的数据
- 变量的作用域:其定义所在的一对{ }内
- 变量只有在其作用域内才有效
- 同一个作用域内,不能定义重名的变量
-
声明变量
- 语法: <数据类型> <变量名称>
- 例如: int var;
-
变量的赋值
- 语法: <变量名称> = <值>
- 例如: var = 10;
-
声明和赋值变量
- 语法: <数据类型> <变量名> = <初始化值>
- 例如: int var = 10;
-
变量的分类
变量根据作用域可划分为三种:
- 类变量(静态变量: 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基本语法(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能
- 2024-11-28如何高效管理数字化转型项目
- 2024-11-28SMART法则好用吗?有哪些项目管理工具辅助实现?
- 2024-11-28深度剖析:6 款办公软件如何构建设计团队项目可视化管理新生态?
- 2024-11-28HTTP缓存课程:新手入门指南
- 2024-11-28实战丨证券 HTAP 混合业务场景的难点问题应对