第三章:操作符
- 静态导入类中的方法。由于好久没有通过纯文本的方式手写java代码并手动执行编译和运行java程序了。导致好多细节都不懂了,特此记录一下。
第一个类:
package com.wuyong;
/** 静态方法类,测试静态导入方法 */
public class Tmp01{
/** 打印字符串并换行。
* @param str 待打印的字符串
*/
public static void print(String str){
System.out.println(str);
}
/** 打印字符串,并不换行。
* @param str 待打印的字符串。
*/
public static void printnb(String str){
System.out.print(str);
}
}
第二个类:
package com.wuyong;
import static com.wuyong.Tmp01.*;
/** 测试静态引入方法 */
public class Tmp02{
/** 程序启动入口
* @param args 程序启动传入的参数
*/
public static void main(String[] args){
for(String str:args){
print(str);
}
print("1111");
}
}
** 执行的命令 **
# 将源码编译转换成二进制的class文件,同时指定文件目录。
javac -d . *.java
# 运行测试程序
java com.wuyong.Tmp02
# 复习一下注解文档的生成命令(指定目录)
javadoc -d doc *.java
- 几乎所有的操作符只能操作“基本类型”,但是“=”,“+=”,“!=”,这些操作符能操作所有对象,但是要注意其表达的实际含义。String类支持“+”和“+=”。
- 赋值操作符:取右边的值把他复制给左边。右边可以使任意常量、变量、表达式,但是左边必须是一个明确的已命名的变量,即必须有一个物理空间可以存储等号右边的值。
- 注意“基本类型”的赋值与对象的赋值不同。基本类型赋值,值的复制。对象复制,是引用地址的复制。
- 别名:不同的引用其值(对象地址)相同。
- 简化运算符可同时进行运算与赋值操作。例如:+=、-=、*=、/=、等。
- Random类初始化时刻传入一个种子,这样其每次运行产生的随机数序列是固定的。
- 前缀式操作符(++i):先运算再取值;后缀式操作符(i++):先取值再运算。
- 短路:一旦能够明确无误地确定整个表达式的值,就不再计算余下的部分了。例如:if(1>2||2>1||((x=10)>1)),则不会执行x=10。
- 指数标记法:2e3==>2000,即e代表10。
- 移位运算,只有数值右端的低5位才有用,看了好久没看懂,其英语原文为:Only the five low-order bits of the right-hand side will be used.又查了资料,其意思是,因为int类型整数是32位,即最多右移32位,而32用二进制表示的话只需要5个二进制位。
- 如果一个表达式以一个字符串起头,那么后续所有的操作数都必须是字符串型,及时不是字符串也会按照字符串处理。
- 窄化转换:例如long–>int,可能存在信息丢失,必须显示进行。扩展转换:例如int–>long,不会存在信息丢失,可不必显示进行。
- java中所有数据类型所占的大小都是固定的。
- 整数不能进行逻辑运算。
总结
看了这么多java基础知识,收益匪浅。很多细节在以前学习的时候都没有特别在意,回过头来再看的时候,觉得这些细节确实如此的重要。突然有一种想出一份应届生面试题的冲动。如果能把这些基础知识理解透,很有可能会成为一个非常好的程序员。