继续看第三章,接下来就是运算符了。
java的运算符和大部分的语言运算符基本一致,分为算术运算符+、-、*、/;自增运算符++;自减运算符--;关系运算符==、<、>、<=、>=、!=;表示逻辑的&&、||、!;位运算符&、|、^、~;移位运算符 >>、<<、>>>(高位填充0后右移)。其中需要注意的是>>>运算符,不存在<<<运算符!
这些运算符存在着不同的优先级别,在没有括号的时候,系统会按照优先级的先后顺序依次进行计算。
优先级顺序如下:
[] ()(方法调用) ! ~ ++ -- +(一元运算) -(一元运算) ()(强制类型转换) new * / % + - << >> >>> < <= > >= instanceof == != & ^ | && || ?: = += -= *= /= %= &= |= ^= <<= >>= >>>=
当我们进行更复杂的运算时,比如说平方,幂运算,三角函数运算等,就需要用到一些数学运算函数了,在java中这些函数在Math类中提供!
在计算中需要不同数据类型的数据同时运算时,我们需要类型之间的转换,转换的优先级别是:double、float、long、int。
当需要进行强制转换的时候,方法是在需转换变量前的圆括号内给出想要转换的目标类型。
如: double x = 9.9997;
int nx = (int) x;
注意:如果强制转换的数据超出了目标类型的表示范围时,结果会截断成一个完全不同的值。尽量不要出现,结果近乎不可预知。同时尽量不要将布尔值强制转换,防止发生错误。
当我们需要处理字符串的时候,发现java没有字符串类型。java是通过在标准java类库中提供了一个预定义的类String。这样每个字符串都将是String类的一个实例。
需要注意的是java字符串处理的一些性质。
1、可以使用“+”运算符将两个字符串拼接起来。
2、字符串不可变,也就是我们不可能将一个字符串的某一位进行改变,当需要这样的操作时,需要我们将留下的截取,然后拼接上新的字符串。
3、使用s.equals(t) 表达式进行字符串相等检测,s t相等,返回true,否则返回false。
在java的String类中包含了50多个方法,熟悉这些方法的使用能够帮助我们更好的处理字符串。
由于java得字符串不可变特性,使得我们需要由短字符串构建字符串的时候会非常的麻烦,每次都连接字符串的话,浪费时间,更浪费空间。这时我们需要使用StringBuilder类。
这个类给我们提供构建一个字符串构建器
StringBuilder builder = new StringBuilder();
每次添加一部分内容时,调用append方法。
builder.append(ch); //添加一个单个字符
builder.append(str);//添加一个字符串
需要使用构建好的字符串时,调用toString方法,其中包含了构建器中的字符序列。
String completedString = builder.toString();
java的输入也是通过相应的类来实现的,标准输入流,需要构造一个Scanner对象,之后使用类中格的方法实现输入。
格式化输出使用System.out.printf();
如果需要文件输入则需要使用File对象构造一个Scanner对性。
如:Scanner in = new Scanner(new File("myfile.txt"));
文件写入需要构建PrintWriter对象。
java的流程控制和其他大部分语言是一样的,采用条件和循环。
条件语句可使用 if语句,if-else语句,if-else if-else if......
循环有while循环,do-while循环,for循环
还有多重选择的switch语句
可以使用break中断控制流程语句,每次向外跳一层。注意的是java中提供了一种带标签的break语句,可以跳出到指定位置,可用于一次跳出多重嵌套的循环语句。
也可以使用continue语句用于跳出本次循环,即马上来到循环的开头位置。同时也有带标签的continue语句,用于跳到指定位置。