代码示例
public class Main {
public static void main(String[] args) {
int a='a';
System.out.println(a); //97
char b='a';
short c=123;
System.out.println(b+c); //220
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append("hi");
stringBuilder.append(',');
stringBuilder.append("l'am katy");
System.out.println(stringBuilder.toString()); // hi,l'am katy
stringBuilder.delete(0,3);
String sb=stringBuilder.toString();
System.out.println(sb); // l'am katy
try {
Scanner in = new Scanner(Paths.get("C:\\Users\\Gaga\\Desktop\\myFile.txt"));
//构造一个从给定文件读取数据的Scanner
if(in.hasNextLine()){
System.out.println(in.nextLine()); //输出文件中的内容
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
变量
变量名必须以字母开头,字母或数字组成的序列,字母包括’A’-‘Z’,’a’-‘z’,’_’,’ ′,除保留字! 是一个合法的Java字符,但不要在自己的代码中使用这个字符,它只用在Java编译器或其他工具生成的名字中
常量
利用关键字final指示常量,关键字final表示这个变量只能被赋值一次,,习惯上常量使用全大写
使用关键字static final 设置一个类常量
运算符
&和|运算符用于布尔值,得到的结果 也是布尔值。&&和||为”短路”方式计算,而&和|在得到计算结果之前,一定要计算两个操作数的值。
数值类型之间的转换
转换规则:从存储范围小的类型到存储范围大的类型。
具体规则为:byte→short(char)→int→long→float→double
强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。
转换规则:从存储范围大的类型到存储范围小的类型。
具体规则为:double→float→long→int→short(char)→byte
当两个数值进行二元操作时,先要将两个操作数转换为同一个类型,然后进行计算。
规则如下:
- 如果连个操作数有一个是double,另一个操作数转为double。
- 否则,如果其中一个为float,另一个转为float。
- 否则,如果其中一个为long,另一个为long。
- 否则,两个操作数都将转换为int类型。
字符串
每个用双引号括起来的字符串都是String类的一个实例。
子串:String类的substring方法可以从一个较大的字符串提取一个子串。
s.substring(a,b):复制的位置从a到b,包括a但不包括b。
不可变字符串:不能修改Java字符串中的字符。
使用equals方法检测两个字符串是否相等。
使用equalsIgnoreCase检测两个字符串是否相等,不区分大小写。
检查一个字符串是否为null,使用str==null?
一定不能使用==判断两个字符串相等,可以想象各种字符串存放在公共的存储池中,只有字符串常量是共享的,而+或substring等操作产生的结果并不是共享的。
构件字符串:
当需要用许多小段的字符串构件一个字符串,如果采用字符串连接的方式,效率低,因为每次连接字符串,都会构件一个新的String对象,耗时且浪费空间。
使用StringBuild解决:
StringBuilder sBuilder=new StringBuilder(); //创建一个空的字符串构造器
sBuilder.append(ch||str); //添加内容
String completeString=sBuilder.toString(); //构建字符串,可以得到一个String对象,返回一个与构建器或缓冲器内容相同的字符串
StringBuilder的前身是StringBuffer,其效率稍有些低,但允许采用多线程的方式执行添加或删除字符的操作,如果所有字符串在一个单线程中编辑(通常如此),则应该使用StringBuilder代替它。
输入输出
读取"标准输入流" System.in,首先需要构造Scanner对象,并与标准输入流System.in 关联。
Scanner in=new Scanner(System.in);
System.out.println("what's your name?");
String name=in.nextLine(); //读取控制台输入的一行内容
Scanner类定义在java.util包中,import java.util.*;
文件输入与输出:
要想对文件进行读取,首先要用File对象构造一个Scanner对象
Scanner in=new Scanner(Paths.get("myFile.txt")); //如果文件名中包含反斜杠符号,就要在每个反斜杠前加一个额外的反斜杠
!可以构造一个带有字符串参数的Scanner,但这个Scanner将字符串解释为数据,而不是文件名。
PrintWriter out=new PrintWriter("myFile.txt"); // 要想写入文件,构造一个PrintWriter对象,在构造器中只要提供文件名
控制流程:
多重选择 switch语句:
switch(choice){
case 1:
.....
break;
case 2:
.....
break;
case 3:
.....
break;
default:
....
break;
}
switch语句将从与选项值相匹配的case标签处开始执行直到遇到break语句,或者执行到switch语句结束处为止。如果没有匹配到,执行default字句。
如果在case分支语句末尾没有break语句,会直接执行下一个case语句,常常引发错误,最好不要使用switch 语句。
case标签可以是:
类型为char、byte、short、int或其他(包装器类Character、Byte、Short和Integer)的常量表达式。
枚举常量
Size sz=...;
switch(sz){
case SMALL: // no need to use Size.SMALL
.....
break;
.....
}
- Java SE7,字符串字面量
中断控制流程语句:
带标签break,用于跳出多重嵌套的循环语句。
注意:标签必须放在最外层循环之前,并且必须紧跟一个冒号。
continue语句,将控制转移到最内层循环的首部。
大数值
java.math包中的BigInteger和BigDecimal.
int compareTo(BigDecimal other);//比较两个大数值的大小,如果这个大实数与另一个大实数相等,返回0;小于other,返回负数;否则返回正数。
使用静态valueOf方法可以将普通的数值转换为大数值。
Mischief managed