Java学习——Java语法基础1(数据类型与运算符)
文章目录
一、变量
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为"变量"。
变量和常量是构成表达式的重要部分,变量所代表的内部是可以被修改的。
变量分类
按所属的数据类型划分:
- 基本数据类型变量
- 引用数据类型变量
按被声明的位置划分:
- 局部变量:方法或语句块内部定义的变量
- 成员变量:方法外部、类的内部定义的变量
数据类型
由于变量记录的数据内容大小不同, 导致所需的存储单元大小不同,在 Java 语言中使用数据类型的概念加以描述。
8种基本数据类型
8种基本数据类型详情
变量的声明格式为: 数据类型 变量名 [=初始值];
变量名要遵守用标识符命名规范,却在相关的作用域中不能有重复的变量名。变量作用域是变量的使用范围,在此范围内变量可以使用,超过作用域,变量内容则被释放,根据作用域不同分为:成员变量和局部变量
例:
public class HelloWorld {
// 声明int型成员变量
int y;
public static void main(String[] args) {
// 声明int型局部变量
int x = 10;
// 声明float型变量并赋值
float f = 4.5f;
//声明long型变量并赋值
long a = 126494532991L;
// x = 10;
System.out.println("x = " + x);
System.out.println("f = " + f);
if (f < 10) {
// 声明型局部变量
int m = 5;
}
System.out.println(x);
}
}
二、常量
常量事实上是那些内容不能被修改的变量,常量与变量类似也需要初始化,即在声明常量的同时要赋予一个初始值。常量一旦初始化就不可以被修改。
它的声明格式为:final 数据类型 变量名 = 初始值;
例:
public class HelloWorld {
// 静态常量,替代保留字const
public static final double PI = 3.14;
// 声明成员常量
final int y = 10;
public static void main(String[] args) {
// 声明局部常量
final double x = 3.3;
}
}
常量有三种类型:静态常量、成员常量和局部常量。第二排代码 “PI”处 的是声明静态常量,使用在final 之前使用public static修饰,用来替代保留字const。public static修饰的常量作用域是全局的,不需要创建对象就可以访问它,在类外部访问形式:HelloWorld. PI,这种常量在编程中使用很多。
三、数据转换
自动类型转换
自动类型转换就是需要类型之间转换是自动的,不需要采取其他手段,总的原则是小范围数据类型可以自动转换为大范围数据类型,列类型转换顺序如图所示,从左到右是自动。
自动类型转换不仅发生在赋值过程中,在进行数学计算时也会发生自动类型转换,在运算中往往是先将数据类型转换为同一类型,然后再进行计算。计算规则如表所示。
例:
// 声明整数变量
byte bNum = 16;
short sNum = 16;
int iNum = 16;
long lNum = 16L;
// byte类型转换为int类型intNum = byteNum;
// 声明char变量
char cNum = '陈';
// char类型转换为int类型
iNum = cNum;
// 声明浮点变量
// long类型转换为float类型
float fNum = lNum;
// float类型转换为double类型
double dNum = fNum;
//表达式计算后类型是double
double result = fNum * iNum + dNum / sNum;
强制类型转换
容量大的类型转换成容量小的数据类型时,要加上强制转换符。
在数值类型转换过程中,除了需要自动类型转换外,有时还需要强制类型转换,强制类型转换是在变量或常量之前加上“(目标类型)”实现。
有可能造成精度降低或数据溢出,使用时要小心。
容量小的类型强制转换成容量大的数据类型,语法上是允许的,虽然看似没有必要,但有时为了提升精度需要转换。
例:
//int型变量
int i = 10;
float c1 = i / 3;
System.out.println(c1);
//把int变量i强制转换为float
float c2 = (float)i / 3;
System.out.println("转化后为:"+c2);
输出结果:
3.0
3.3333333
四、引用数据类型
在Java中除了8种基本数据类型外,其他数据类型全部都是引用(reference)数据类型,引用数据类型用了表示复杂数据类型,如图所示,包含:类、接口和数组声明的数据类型。
例:
String str1 = "Hello";
String str2 = str1;
str2 = "World";
当程序执行完第一行时,字符串“Hello”对象被创建,保持到内存地址0x12345678中,str1是引用类型变量,它保存的是内存地址0x12345678,这个地址指向“Hello”对象。
当程序执行完第二行时,str1变量内容(0x12345678)被赋值给str2是引用类型变量,这样一来str1和str2保存了相同的内存地址,都指向“Hello”对象。如图所示,此时str1和str2本质上是引用一个对象,通过任何一个引用都可以修改对象本身。
当程序执行完第三行时,字符串“World”对象被创建,保持到内存地址0x23455678中,地址保存到str2变量中,此时,str1和str2不再指向相同内存地址,如图所示。
五、Java 运算符——算术运算符
Java语言中的运算符(也称操作符)在风格和功能上都与C 和C++极为相似。Java语言中一些主要的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和其他运算符。
算数运算符
Java中的算术运算符主要用来组织数值类型数据的算术运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。
一元运算符:
-a是对a取反运算。而++ 或 – 放在变量位置不同效果不同,a++或a–是在表达式运算完后,再给a加一或减一。而++a或–a是先给a加一或减一,然后再进行表达式运算。
例:
int a = 12;
System.out.println(-a);
int b = a++; //先取值再运算
System.out.println(b);
b = ++a; //先运算再取值
System.out.println(b);
输出结果如下:
-12
12
14
二元算术运算: