【JAVA SE】第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换和运算规则
第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换、运算规则和标识符命名风格
文章目录
- 第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换、运算规则和标识符命名风格
- 一、Java语法基础
- 1.标识符
- 2.关键字
- 3.注释
- 4.变量
- 5.常量
- 二、数据类型
- 1.基本类型介绍
- 2.引用类型
- 三、基本类型的字面值
- 1.整数字面值是int类型
- 2.byte,short,char三种比int小的整数可以用范围内的值直接赋值
- 3.浮点数的字面值是double类型
- 4.字面值后缀只有L D F
- 5.进制前缀
- 四、基本类型的类型转换
- 1.自动类型转换
- 2.强制类型转换
- 五、运算规则
- 1.计算结果的数据类型,与最大数据类型一致
- 2.byte,short,char三种比int小的整数,运算时会先自动转换成int
- 3.整数运算溢出
- 4.浮点数运算不精确
- 5.浮点数的特殊值
一、Java语法基础
1.标识符
标识符可以简单的理解成一个名字。
在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等等。我们选择的那个名称就称为标识符,一个正确的标识符需要遵循以下规则:
- 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符
- 不能以数字开头
- 标识符严格区分大小写
- 标识符的命名最好能反映出其作用,做到见名知意
- 标识符不能是Java的关键字
2.关键字
关键字一律用小写字母标识,按其用途划分为如下几组:
- 用于数据类型的关键字有 boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof
- 用于语句的关键字有 break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super
- 用于修饰的关键字有 abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile
- 用于方法、类、接口、包和异常的关键字有 class、 extends、 implements、interface、 package、import、throws
- 保留关键字,没有具体含义的有两个:goto 和 const
- 还有些关键字,如 cat、 future、 generic、innerr、 operator、 outer、rest、var等都是Java保留的没有意义的关键字
- 另外,Java还有3个保留字:true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用
3.注释
几乎所有编程语言都允许程序员在代码中输入注释,因为编译器会忽略注释,所以注释并不会影响程序的运行结果
注释的真正作用是: 它可以向任何阅读代码的人描述或者解释程序的实现思路,如何使用以及其它任何相关信息, 提高代码的可读性,方便后期的维护与复用。
Java的注释有3种:
单行注释::注释单行内容
格式:每行都以”//”开头.多行注释:注释多行内容,虽然叫多行注释,也可注释单行内容
格式::以” /* ”开头, 以” * / ”结束文档注释: 一般用来注释类和方法,通过注释内容来记录类或者方法的信息
格式:以“ /** ”开头。 以“ */ ”结尾
4.变量
在JAVA中,我们需要记录一些数据,但这些数据的值是不固定的,总在变,我们可以把这些数据理解为变量
我们通过三个元素来描述变量:变量类型、变量名以及变量值
- int age = 18; //声明int类型的变量并赋值
- String tel ; //声明String类型的变量
注意:
- 变量名必须是一个有效的标识符
- 变量名不可以使用java关键字
- 变量名不能重复
5.常量
常量在程序运行时是不能被修改的
二、数据类型
1.基本类型介绍
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据
byte:
- byte 数据类型是8位、有符号的,以二进制补码表示的整数
- 最小值是 -2^7
- 最大值是 2^7-1
- 默认值是 0
- byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一
- 字节空间:1
short:
- short 数据类型是 16 位、有符号的以二进制补码表示的整数
- 最小值是 -2^15
- 最大值是 2^15 - 1
- Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一
- 默认值是 0
- 字节空间:2
int:
- int 数据类型是32位、有符号的以二进制补码表示的整数
- 最小值是 -2^31
- 最大值是 2^31 - 1
- 一般地整型变量默认为 int 类型
- 默认值是 0
- 字节空间:4
long:
- long 数据类型是 64 位、有符号的以二进制补码表示的整数
- 最小值是-2^63
- 最大值是 2^63 -1
- 这种类型主要使用在需要比较大整数的系统上
- 默认值是 0L
- 字节空间:8
float:
- float 数据类型是单精度、32位、符合IEEE 754标准的浮点数
- 单精度,用于对小数部分的精度要求不高
- float 在储存大型浮点数组的时候可节省内存空间
- 默认值是 0.0f
- 浮点数不能用来表示精确的值,如货币
- 字节空间:4
double:
- double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数
- 浮点数的默认类型为 double 类型
- 双精度,用于需要精确的小数部分并且操作值很大时
- double类型同样不能表示精确的值,如货币
- 默认值是 0.0d
- 字节空间:8
boolean:
- boolean数据类型表示一位的信息
- 只有两个取值:true 和 false
- 这种类型只作为一种标志来记录 true/false 情况
- 默认值是 false
- 字节空间:1
char:
- char 类型是一个单一的 16 位 Unicode 字符
- 最小值是 \u0000(十进制等效值为 0)
- 最大值是 \uffff(即为 65535)
- char 数据类型可以储存任何字符
- 字节空间:2
2.引用类型
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了
- 对象、数组都是引用数据类型
- 所有引用类型的默认值都是null
- 一个引用变量可以用来引用任何与之兼容的类型
三、基本类型的字面值
1.整数字面值是int类型
只要写一个整数,它就被认为是 int 类型,但是必须在 int 的取值范围内
int x = 99999999999999;//错误,超出 int 取值范围
long x = 99999999999999;//错误,赋值运算符右边还是被认为是 int 类型,仍超出 int 取值范围
long x = 99999999999999L;//正确,赋值运算符右边是 long 类型
2.byte,short,char三种比int小的整数可以用范围内的值直接赋值
byte b1 = 127;//正确
byte b2 = 128;//错误,超出 byte 范围
3.浮点数的字面值是double类型
与第一条类似
double r = 3.14;//正确
float r = 3.14;//错误,赋值运算符右边被认为是 double 类型
4.字面值后缀只有L D F
long x =99999999999L;//字面值是int类型,需转成long类型的数据,加字面值后缀L即可
float b = 3.0F;//3.0字面值是double类型,加后缀F会变成float类型
double d = 3D;//3字面值是int类型,加后缀D,会变成double类型
5.进制前缀
0b - 标识这是2进制,如:0b0101
0 - 标识这是8进制,如: 023
0x - 标识这是16进制,如: 0x0001
\u -标识这是char类型,属于16进制
四、基本类型的类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算
数据类型转换必须满足如下规则:
- 不能对boolean类型进行类型转换
- 不能把对象类型转换成不相关类的对象
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换
- 转换过程中可能导致溢出或损失精度
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
1.自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型
2.强制类型转换
条件是转换的数据类型必须是兼容的
格式:(type)value,type是要强制类型转换后的数据类型 实例:
public class QiangZhiZhuanHuan{public static void main(String[] args){int i1 = 123;byte b = (byte)i1;//强制类型转换为byteSystem.out.println("int强制类型转换为byte后的值等于"+b);}
}
五、运算规则
1.计算结果的数据类型,与最大数据类型一致
2.byte,short,char三种比int小的整数,运算时会先自动转换成int
3.整数运算溢出
整数默认被认为是 int 类型,因此在运算一个很大的整数的时候就会超出 int 类型的取值范围,导致结果错误
300000000*60*60*24*365;//错误,超出 int 取值范围
300000000*60*60*24*365L;//错误,在第一个乘式就已经出错了,后面再更正已经无济于事了
300000000L*60*60*24*365;//正确
4.浮点数运算不精确
1 - 0.8;//结果为0.19999999999999996
5.浮点数的特殊值
1.0/0;//结果为 Infinity 无穷大
0/0.0;//结果为 NaN(not a number)
//这两个值不应该出现在正确的代码内
【JAVA SE】第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换和运算规则相关推荐
- java 3D 第二章 java 3D基本概念
java 3D 第二章 java 3D基本概念 java 3D基本概念 java 3D的包及其功能 java 3D 高分辨率大尺度坐标 Java 3D场景图(Scene Graph) VirtualU ...
- 深入理解Java虚拟机——第二章——Java内存区域与内存溢出异常
运行时数据区域 Java虚拟机运行时数据区域 程序计数器 程序计数器可以看做是当前线程所执行的字节码的行号指示器.字节码解释器工作时就是通过改变这个计数器的值来选取下一条所需要执行的字节码指令,分支. ...
- 深入Java虚拟机-第二章-Java内存区域-学习笔记
Java运行时内存区域 Java虚拟机在运行Java程序的时候会将它所管理的内存区域划分为多个不同的区域.每个区域都有自己的用途,创建以及销毁的时间.有的随着虚拟机的启动而存在,有的则是依赖用户线程来 ...
- 小饶学编程之JAVA SE第二部分——Web 前端基础:09CSS3
CSS3 一.CSS简介 二.入门 三.CSS的分类 四.选择器 4.1 基本选择器 4.2 层次选择器 4.3 结构伪类选择器 4.4 属性选择器 4.5 优先级 五. 元素的分类 六.常用样式 6 ...
- java虚拟机 第二章Java内存区域与内存溢出异常
1.运行时数据区域 1.1.程序计数器 线程私有,当前线程所执行的字节码行号指示器, Java虚拟机的多线程是通过线程轮流切换处理器执行时间的方式来分配 1.2.Java虚拟机栈 线程私有,,虚拟机的 ...
- 使用java实现面向对象编程第二章_java面向对象编程——第二章 java基础语法
第二章 java基础语法 1.java关键字 abstract boolean break byte case catch char class const continue default do d ...
- JavaSE入门0基础笔记 第二章Java基础语法
JavaSE入门0基础笔记 第二章Java基础语法 1.运算符 1.1算术运算符 1.1.1运算符和表达式 1.1.2 算术运算符 1.1.3字符的"+"操作 1.1.4 字符串中 ...
- (Java零基础学习笔记)第二章 Java中的基本语法
前言: 大家好! 我是BA unravel .如果你想和我一起学习JAVA,欢迎大家一起来学习这个世界上最好的语言! 学习目标: 一周掌握 Java 入门知识 学习内容: 1. 搭建 Java 开发环 ...
- 进击 !!第二章 JAVA编程基础
第二章 JAVA编程基础 目标: 掌握java的基本语法,常量,变量,流程控制语句,方法以及数组 运用java运算符的使用 了解java代码的基本格式 2.1java 的基本语法 1. 代码的基本格式 ...
最新文章
- 点击屏幕上EditText区域以外的任何地方隐藏键盘的解决方法
- golang 编译运行出错:imported and not used: log
- STL标准库-容器-set与map
- 怎么算matlab算法复杂度,算法复杂度分析
- python内建函数(不完全)
- 一步步的Abaqus2021版本安装教程+汉化操作
- canape数据导入matlab,CANape使用介绍
- mac系统通过ADB与scrcpy实现手机投屏
- 全网把Map中的hash()分析的最透彻的文章,别无二家
- 图片怎么加logo水印
- java接口的一些理解(未完待续)
- 印度IT业迎来新生:大数据催生大批分析公司
- Linux网卡丢失解决方法
- NSA的攻击,可以做什么?
- 2764和6264地址范围
- 牛客网扒下来的java面筋
- IoT模组使用笔记(二):EC21、EC200指令流程、设置休眠、升级模组、切换运营商等
- 黄金含量版本——KTV
- 利用Python和Power BI做Yelp大数据分析项目
- Mac安装JDK1.8详细教程