变量、数据类型、表达式和运算符

- 变量、数据类型、表达式和运算符

一、标识符

1、标识符的概念

Java所有的组成部分都需要名字,如类名、变量名以及方法名,所有这些名称所使用的字符串序列即被称为标识符。

2、标识符的规则

2.1、基本规则

关于Java标识符,有以下几点强制性的规则需要注意:

  • 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始。
  • 首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划线(_)或数字的任何字符组合。
  • 关键字不能用作标识符。
  • 标识符是大小写敏感的。

2.2、常见约定

在强制性的规则之外,开发过程中,一般需要遵循以下约定:

  • 标识符要符合语义信息,即见名知意。
  • 包名所有字母小写。
  • 类名每个单词首字母大写,其它小写,如:CollegeStudent。
  • 变量和方法的第一个单词小写,从第二个单词开始首字母大写,如:collegeStudent。
  • 类名和变量通常为名词或名词性短语,方法名通常为动词或动宾短语。
  • 常量的所有字母大写,每个单词之间用下划线(_)连接。

2.3、Java中的关键字汇总

下面将列出了Java关键字(保留字),共50个,这些保留字不能用于任何标识符。

二、基本数据类型

1、数据类型的概念

数据是描述客观事物的数字、字母以及能够输入到计算机中的符号。例如“武松”“软件一班”28170等都是数据。数据可根据其特点进行分类,例如“武松”“软件一班”可以归为字符串类,28170可归为数字类。在Java中数据类型分为两大类:基本数据类型和引用数据类型。

2、基本数据类型

Java提供的基本数据类型包括八种,分别是byteshortintlongfloatdoublebooleanchar,如下:

具体说明如下表:

3、引用数据类型

Java中,除了以上提到的8种基本数据类型外,其他的数据类型都是引用数据类型,包括数组、接口、类等。

三、字面量

字面量即我们所能看到的真实具体的字面值。如:

  • 整型字面量:10,123,2147483648L,0144,0x64
  • 浮点型字面量:3.14,6.18F
  • 布尔型字面量:true,false
  • 字符型字面量:‘a’,‘A’,’\u6C49’
  • 字符串型字面量:“gansu”
  • Null型字面量:值为null,代表什么都没有

注意:

  1. 长整型(long)的字面量后面必须有字母lL,为了和数字1区分,一般使用大写字母L
  2. 单精度浮点型(float)的字面量后面必须有字母fF,一般使用大写字母F
  3. 字符型(char)的字面量必须使用单引号。
  4. 字符串型的字面量必须使用双引号。

四、变量

1、变量的概念

变量是指在程序运行过程中其值可以改变的量。本质上,变量就是计算机内存中存放数据的单元,定义变量的本质就是分配内存。当把数值赋给变量时,实际上就是将数值存储到变量代表的内存单元中。

2、Java中的变量

声明变量并初始化的基本语法为:

[修饰符] 数据类型 变量名称 [=] [, 变量名称 [=] ...];

例如:

public class Test {
	public static void main(String[] args) {
		int num1 = 10;
		short num2 = 15, num3 = 20;
		byte num4, num5;
		num4 = 25;
		int num6 = num2 * num3;
		long num7 = 3000000000L;
		double num8 = 2.5;
		float num9 = 6.18F;
		String str = "hello";
		System.out.println(str);
	}
}

说明:

  • 变量必须先声明,然后初始化(赋值),最后才能使用。变量只在申明它的{}内有效。
  • 初始化byteintlong、和short类型的变量时,均可以用十进制、八进制以及十六进制的数字,前缀0表示 八进制数字,前缀0x代表 十六进制数字, 例如:
public class Test {
	public static void main(String[] args) {
		int decimal = 100; // 十进制数100
		int octal = 0144;  // 八进制数0144,即十进制数100
		int hexa =  0x64;  // 十六进制数0x64,即十进制数100
	}
}

五、常量

常量是指不可改变的变量,通常用final修饰。程序运行期间,固定不变的量

下面是一个示例:

public class Test {
	public static void main(String[] args) {
		public static final double E = 2.7182818284590452354;
		public static final double PI = 3.14159265358979323846;
	}
}

六、表达式和运算符

1、表达式

对数据进行加工和处理称为运算,表示各种运算的符号称为运算符,参与运算的数据称为操作数。

表达式是运算符和操作数的有效组合,操作数可以是变量、常量、方法调用的返回值等。例如表达式 z = x + yzxy是操作数,=+是运算符。如图:

2、运算符

表示各种运算的符号称为运算符,Java中运算符大致分为赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、复合赋值运算符等等。

2.1、赋值运算符

赋值运算符的作用即是为变量赋值,比如int a = 3。这里不再赘述。

2.2、算术元素符

算术运算符用来完成数学上的加、减、乘、除四则运算。

public class Test {
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 25;
		System.out.println("num1 + num2 = " + (num1 + num2));
		System.out.println("num1 - num2 = " + (num1 - num2));
		System.out.println("num1 * num2 = " + (num1 * num2));
		System.out.println("num1 / num2 = " + (num1 / num2)); // 两个整型的操作数进行除法运算,结果也会是整型,小数部分会丢失
		System.out.println("num1 % num2 = " + (num1 % num2));
	}
}

说明

  • 两个整型的操作数进行除法运算,结果也会是整型,小数部分会丢失。

自增运算符++和自减运算符--出现在操作数前面或者后面时会有所不同。
下面是另一个示例:

public class Test {
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 10;
		int num3 = 25;
		int num4 = 25;
		
		System.out.println("num1 ++ = " + (num1 ++));
		System.out.println("num1 = " + num1);
		
		System.out.println("++ num2 = " + (++ num2));
		System.out.println("num2 = " + num2);
		
		System.out.println("num3 -- = " + (num3 --));
		System.out.println("num3 = " + num3);
		
		System.out.println("-- num4 = " + (-- num4));
		System.out.println("num4 = " + num4);
	}
}


说明:

表达式num ++和表达式++ num都会使num的值加上1,区别在于表达式num ++的返回值为num,而表达式++ num的返回值为num + 1。
表达式num --和表达式-- num都会使num的值减去1,区别在于表达式num --的返回值为num,而表达式-- num的返回值为num - 1。

### 2.3、关系运算符

关系运算符用于操作数之间的比较。例如:

![](https://img-blog.csdnimg.cn/img_convert/fd8bc0ed8fdda2ffc4e89b4a1522ad59.png)

下面是一个示例:

public class Test {
public static void main(String[] args) {
int num1 = 15;
int num2 = 30;
System.out.println("num1 == num2 = " + (num1 == num2));
System.out.println("num1 != num2 = " + (num1 != num2));
System.out.println("num1 > num2 = " + (num1 > num2));
System.out.println("num1 < num2 = " + (num1 < num2));
System.out.println("num2 >= num1 = " + (num2 >= num1));
System.out.println("num2 <= num1 = " + (num2 <= num1));
}
}


### 2.4、逻辑运算符

逻辑运算符是对布尔类型的操作数进行与、或、非的运算。

public class Test {
public static void main(String[] args) {
// 逻辑运算符基本示例
boolean b1 = true;
boolean b2 = false;
System.out.println("(b1 && b2) = " + (b1 && b2));
System.out.println("(b1 || b2) = " + (b1 || b2));
System.out.println("!(b1 && b2) = " + !(b1 && b2));

    // 逻辑运算符和关系运算符一起使用的例子
    int num1 = 15;
    int num2 = 10;
    int num3 = 30;
    System.out.println("(num1 > num2 && num1 > num3) = " + (num1 > num2 && num1 > num3));
    System.out.println("(num1 > num2 || num1 > num3) = " + (num1 > num2 || num1 > num3));
    System.out.println("!(num1 > num2 && num1 > num3) = " + !(num1 > num2 && num1 > num3));
}

}


### 2.5、位运算符

位运算是对整数类型的操作数进行的二进制运算,总共7个,

![](https://img-blog.csdnimg.cn/img_convert/e3e464ec50a47bbc1317ce4e35b1d4cc.png)

### 2.6、复合赋值运算符

复合赋值运算符是将算术运算和赋值运算同时进行的计算。

### 2.7、条件运算符(三元运算符)

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要作用是决定哪个值应该赋值给变量。
条件运算符的语法如下:

数据类型 变量名称 = ? 值 if true : 值 if false;


public class Test {
public static void main(String[] args) {
int num1 , num2, num3;
num1 = 10;
// 如果 num1 等于 1 成立,则设置 num2 为 20,否则为 30
num2 = (num1 == 1) ? 20 : 30;
System.out.println( "Value of num2 is : " + num2 );

	// 如果 num1 等于 10 成立,则设置 num3 为 20,否则为 30
	num3 = (num1 == 10) ? 20 : 30;
	System.out.println( "Value of num3 is : " + num3 );
}

}


## 3、运算符的优先级

当表达式中有多个运算符参与运算时,必须为每种运算符规定一个优先级,以决定运算符在表达式中的运算次序。优先级高的先运算,优先级低的后运算,优先级相同的由结合性确定计算次序。运算符的优先级及结合性如下表所示:

![](https://img-blog.csdnimg.cn/img_convert/4eab229475afa7e0ce1e48c958a790a8.png)

## 4、案例

下面是一个接收控制台输入数据,并综合运用表达式和运算符的案例。
下面是一个示例:

```Java
public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int xb_java;
        int xb_html;
        int lb_java;
        int lb_html;
        System.out.println("请输入张三的java成绩");
        xb_java = input.nextInt();
        System.out.println("请输入张三的html成绩");
        xb_html = input.nextInt();
        System.out.println("请输入李四的java成绩");
        lb_java = input.nextInt();
        System.out.println("请输入李四的html成绩");
        lb_html = input.nextInt();
        System.out.println("张三的平均成绩是:" + (xb_java + xb_html) / 2);
        System.out.println("李四的平均成绩是:" + (lb_java + lb_html) / 2);
        System.out.println("张三java成绩追上李四了吗? " + ((xb_java >= lb_java) ? "是的" : "没有"));
        System.out.println("张三html成绩超过李四了吗? " + ((xb_html > lb_html) ? "是的" : "没有"));
        System.out.println("张三的平均成绩追上李四了吗? " + ((((xb_java + xb_html) / 2) >= ((lb_java + lb_html) / 2)) ? "是的" : "没有"));
        System.out.println("张三每门课成绩都追上李四了吗? " + (((xb_html > lb_html) && (xb_java > lb_java)) ? "是的" : "没有"));
    }
}

说明:

  • 本例中涉及了如何从键盘上输入数据。JDK中提供了很多已经开发好的类库,在程序开发过程中可以直接使用。java.util.Scanner类提供了获取用户在控制台中输入的数据的功能。使用时分为两步:
// 1.创建Scanner对象,该对象用于接收用户在控制台中输入的数据
java.util.Scanner input = new java.util.Scanner(System.in); 
// 2.使用Scanner对象提供的方法获取用户输入的数据
int score = input.nextInt();

ava > lb_java)) ? “是的” : “没有”));
}
}


说明:

- 本例中涉及了如何从键盘上输入数据。JDK中提供了很多已经开发好的类库,在程序开发过程中可以直接使用。`java.util.Scanner`类提供了获取用户在控制台中输入的数据的功能。使用时分为两步:

```Java
// 1.创建Scanner对象,该对象用于接收用户在控制台中输入的数据
java.util.Scanner input = new java.util.Scanner(System.in); 
// 2.使用Scanner对象提供的方法获取用户输入的数据
int score = input.nextInt();

数据类型转换
数据类型的从高到低的排序:
double float long int short byte
高级别---------------------------->低级别
自动转换与强制转换
赋值运算中,数据类型转换的规则如下:
1:当低级别的赋值给高级别的变量时,系统会自动完成数据类型的转换。例如:

int i=52;
float x;
x=i;//自动转换

当高级别的赋值给低级别的变量时,必须进行强制类型转换,强制类型的转换的形式如下:
(类型标识符)待转换的值;
例如:

float f=1.6F;
int i=(int)f;//将float类型的值转换成int类型的值后存储到int类型的变量i中。

强制类型转换可能会造成数据丢失,如上所述中f的值时1.6,转换成int类型后会丢失精度,i的值的是1。
案例:

public class hjdf {
    public static void main(String[] args) {
        int i=15,j=4,k;
        float f1,f2;
        k=i/j;
        f1=i/j;
        f2=(float)i/j;
        System.out.println("k="+k);
        System.out.println("f1="+f1);
        System.out.println( "f2="+f2);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值