小仙的第四天 运算符

108 阅读3分钟

▼整个表达式类型一致
▼静态语言与动态语言
▼不同数据类型间运算
▼接收键盘输入
▼&和&&区别
▼运算符优先级

▼整个表达式类型一致

2种加号用法

加法号的作用与所在表达式运行类型保持一致;

加号作为数学加法运算符;10+5

加号作为串连接运算符;例""+10+"+"+5

返回值类型一致

操作数是整型,那结果也是整型;同理,其中一个操作数出现小说,则结果是小数

2=13/5;

2.6=13.0/5;

在有些语言中 2.6=13/5;

▼静态语言与动态语言

int a=3; a+=a*=a;

a最后值为12;有些语言输出18;

动态语言,动态修改a的值为9(9+9=18),静态语言依然是3(3+9=12)

▼不同数据类型间运算

规律:不同类型进行运算时,会根据不丢失进度精度情况下进行隐式自动转换为其中较大范围的操作数类型后进行运算,同时也决定了返回类型;

char型和int型返回int型;[char转int不损失精度]

int和String返回String;[int转换为String不损失精度,String类型应该是精度无限制]

char型和String型返回String;[同样char转换为String不损失精度]

package com.xian.operator;

public class Operator4 {
	public static void main(String[] args) {
		char c='c';
		int i=10;
		double d=10;
		long l=1;
		String s="hello";
		int a=2;

		//c=c+i;//类型不匹配,不能将int转换成char,char型和int型返回int型
		System.out.println(c+i);//输出:109,i+c=10+99=109

//		s+=i;
//		System.out.println("s="+s);//输出:hello10

//		i+=s;
//		i=i+s;//int和String返回String;
//		System.out.println(i+s);
		//The operator += is undefined for the argument type(s) int, String.操作符 += 是未定义的对于参数类型int和String.The type of each of the operands of a numerical comparison operator must be a type that is convertible (§5.1.8) to a primitive numeric type, or a compile-time error occurs.每个数字比较运算符的操作数类型必须是一个可转换为原始的数字类型,否则编译时错误出现.--这里应该是i=i+s,i不能存放字符串(i+s)已验证是串,int和String进行运算则返回String,所以s+=i;不报错,反过来报错;

//		c+=s;
//		c=c+s;//char型和String型返回String
//		System.out.println(c+s);//输出:chello
	}
}

'A' > 'B',大于运算符要求操作数必须能转换为原始数字类型.

"24" > 30,"24"是String型,它不能转换为原始数字类型.

float f=5.0f;long l=5l;f==l,结果为true,这里一个要点,浮点型和整数进行比较,只要值相等就返回true;[言外之意,除了值可能还会考察类型差异]

▼接收键盘输入

Scanner s = new Scanner(System.in);

int n = s.nextInt();

▼逻辑运算符与或非

逻辑运算符要求参与逻辑运算的操作数类型为boolean类型或返回值为boolean类型的表达式.有些语言true和1都能代表真,但java限定true唯一合法类型.

▼&和&&区别

&先执行一边表达式并获得结果,再执行另一边表达式并获得结果,然后再进行与运算;

&&运算符,又叫短路运算符,它先执行一边表达式并获得结果,如果为false,已经决定整个表达式结果,则不需执行另一边表达式了,直接返回false;

共同点 功能都是与运算

▼运算符优先级

(),!,单目,数学,关系,等于,逻辑,赋值

快速记忆: 数学关系等逻赋