package operator;
/**
* 操作符的学习
* @author
* @version 1.0
*/
public class OprTest {
/*
* 上一次介绍了java中关于对象的一些知识
* java中既有一些基本类型(特殊类型)的数据,也可以有由程序员自己定义类型的对象
* 而且,使用这些对象的方式是用new创建,用"."去访问成员属性和方法(public)
*
* 那么,我想计算1+1,又该如何实现?
* 这就用到了操作符“+”
* 类比一下,两个操作数就是两个基本类型int的对象
* 如果我想让两个对象产生关联,就可以使用操作符
*/
/**
* 1.算术操作符,+ - * / % 加减乘除,取模(余数)
* 操作符其实都有优先级,只不过算术运算符比较明显,先算乘除和取模,后算加减
* 再比如,A && B,下面会介绍,这是A和B两件事,两件事都是真的,那么整个表达式结果就是真的
* A 和 B可以是其他表达式,那么肯定应该是先得到两件事的结果,再进行&&这个运算
* 为了避免搞混,合理地使用()是非常好的,原则很简单,“括号里的先算!”
* ++和--是递增和递减,x++就是x=x+1
*/
public void algorithm() {
System.out.println(" 1+3*4-2= " + ( 1 + 3 * 4 - 2 ) );
System.out.println(" (1+3)*(4-2)= "+( ( 1 + 3 ) * ( 4 - 2 ) ) );
}
/**
* 2.赋值:= += -= *= /=
* x+=1 就是 x=x+1
* 赋值的时候会出现一个问题,把一个基本类型的变量赋值给另一个变量(从右向左),没什么问题,直接复制值
* 如果是对象呢?是把堆中对象的内存空间直接覆盖了?
* 不是的,对象赋值只操作引用!引用!引用!函数传参传的也是引用!
* 也就是说,两个引用指向的是一个位置,你改一个另一个也会跟着改
* 叫做“别名问题”
*/
public void problem() {
Test t1 = new Test();
Test t2 = new Test();
t1.test = 1;
t2.test = 2;
System.out.println("t1没赋值给t2之前:t1:" + t1.test + " t2:" + t2.test);
t2 = t1;
System.out.println("t1赋值给t2之后:t1:" + t1.test + " t2:" + t2.test);
// 字符串也可以增加
String str = "ab";
System.out.println("str在增加之前:" + str);
str += "c";
System.out.println("str在增加之后:" + str);
}
/**
* 3.关系操作符 == != > < >= <=
* 作用于基本数据类型,返回一个布尔变量
* java库的一些对象可以用 == != 进行比较,比如两个Integer对象
* 但是对于我们自定义的对象,需要覆盖equals方法进行比较,后面学到了再说
*/
/**
* 4.逻辑操作符 && || !
* 与或非,作用于布尔变量true或false
* 这个得去学一点离散数学的真值表,没办法,简单理解就是
* 用&&连接的,都是真才为真
* 用||连接的,有一个真就是真
* 用!,直接取反
* 那么有时候需要很多项表达式混在一起 A && B && C && ……
* 只要确定了整个表达式的值,那么就不再继续计算剩下没算过的表达式了
*/
public boolean test1() {
System.out.println("execute 1");
return false;
}
public boolean test2() {
System.out.println("execute 2");
return true;
}
public void logic() {
System.out.println( test1() || test2() );
System.out.println( test1() && test2() );
}
/**
* 5.条件运算符
* (A) ? (B) : (C) 如果A是真的,就执行B,否则,执行C
* 真的不如if else更容易理解
*/
/**
* 6.类型转换
* java有两种类型转换;隐式的和显式的
* 隐式的类型转化,就是将char byte 和 short转化为int,然后再将整个表达式的数据的类型全都转换为位数最高的类型
* 显示类型转化需要程序员规定将数据转换为什么类型的数据 (double)1/2
* 如果不转换,1/2得到的结果将会是0,直接截取,不会四舍五入,四舍五入要用round函数(java.lang包)
*/
public void changeType() {
short num1 = 6;
short num2 = 8;
short num3 = (short)( num1 + num2 );// 不加(short)右侧计算结果将会是int,不允许这样
System.out.println(num3);
int num6 = 2/3;
float num5 = (float)2/3;
int num7 = Math.round(num5);
System.out.println("自动圆整:" + num6);
System.out.println("手动圆整:" + num7);
}
}
/**
* 用于别名问题
*/
class Test {
int test;
}
java操作符
最新推荐文章于 2024-09-13 21:40:38 发布