盖章主要讲了注释,数据类型,变量,运算符,字符串,输入输出,控制流程,大数值,数组
3.2注释:
在java代码编译时注释并不会编译到程序中,不会影响程序的效率,因此可以任意的注释
3.3数据类型
1)类型标记:
长整型后缀L:400000000L
十六进制前缀0x或者0X,如0xCAFE
八进制前缀0,如010=8
二进制前缀0b或者0B如0b1001就是9
同样,java7以后,为方便阅读,可以写1_000_000表示一百万,java编译器会自动去除“_”
2)float和double
小数默认为double型,后面加F才能表示float型,float很少用,只适用于单精度数据库或需要存储大量数据
3)char
char 类型原本用于表示单个字符。不过,现在情况已经有所变化。 如今,有些 Unicode
字符可以用一个 char
值描述,另外一些 Unicode 字符则需要两个 char 值。
注意的是:\u转义序列在编译时会通过编译器转换,甚至在注释中也会转换,如果格式不正确,则会报转换错误异常
警告: Unicode 转义序列会在解析代码之前得到处理。 例如,"\u0022+\u0022 ” 并不是一
个由引号(U+0022) 包围加号构成的字符串。 实际上, \u0022 会在解析之前转换为 ", 这
会 得 到 也 就 是 一 个 空 串。
更隐秘地, 一定要当心注释中的 \u。注释
// \u00A0 is a newline
会产生一个语法错误, 因为读程序时 \u00A0 会替换为一个换行符类似地,下面这
个注释
// Look inside c:\users
也会产生一个语法错误, 因为 \u 后面并未跟着 4 个十六进制数
补充:
JAVA中的char类型
1、JAVA中,char占2字节,16位。可在存放汉字
2、char赋值
char a='a'; //任意单个字符,加单引号。
char a='中';//任意单个中文字,加单引号。
char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
注:只能放单个字符。
3、char运算
char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。
在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。
示例:
char m='a'; ——a。
char m='a'+'b'; ——Ã。 //char类型相加,提升为int类型,输出对应的字符。注,在CMD.exe用输出结果是问题?,不同的编码输出显示不一样。Eclipse中须改成UTF-8。
int m='a'+'b'; ——195。//195没有超出int范围,直接输出195。
char m='a'+b; ——报错。//因为b是一个赋值的变量。
char m=197; ——Ã。 //输出字符编码表中对应的字符。
char m='197; ——报错。//因为有单引号,表示是字符,只允许放单个字符。
char m='a'+1; ——b。//提升为int,计算结果98对应的字符是b。
char m='中'+'国'; ——42282。
char m='中'+'国'+'国'+'国'; ——报错。int转char有损失。因为结果已经超出char类型的范围。
int m='中'+'国'+'国'+'国'; ——86820
char m='中'+1; ——丮。//1是int,结果提升为int,输出对应的字符。
char m='中'+"国"; ——报错。String无法转换为char。
System.out.println('中'+"国"); ——中国。//没有变量附值的过程。String与任何字符用“+”相连,转换为String。
总结:
用单引号''标识,只能放单个字符。
char+char,char+int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符。
3.4变量
1)变量没什么好说的额,注意不要连续的初始化,虽然合法,但是可读性不高,反例:
int i , j// both are integers
2)变量申明放在任何地方都合法,但是尽量放在第一次使用的地方、
3)final修饰的变量:只能被初始化一次;
4)final+static的变量:叫类变量,又叫常量,必须大写,且申明的同时必须被初始化
常量如果要被其它类访问,需要添加public修饰
3.5运算符
3.5.2数值类型间的转换
见下图,6条实线,3条虚线,实线表示转换精度不丢失,虚线反之
3.5.3强制转换
逆向箭头转换,会有精度丢失,当目标范围不够显示,会将原数据截断一部分,变成另外一个数
。例如:
double x * 9.997;
int nx = (int) x;
这样, 变量 nx 的值为 9。
3.5.4结合赋值和运算符
一般地, 要把运算符放在 = 号左边,如 *= 或 %=
注释: 如果运算符得到一个值, 其类型与左侧操作数的类型不同, 就会发生强制类型转换。
例如,如果 X 是一个 int, 则以下语句
x += 3.5;
是合法的, 将把 X 设置为(int)(x + 3.5)。
3.5.5自增自减
--x,++x;x--,x++
实际上, 这些运算符有两种形式;上面介绍的是运算符放在操作数后面的“ 后缀” 形式。
还有一种“ 前缀” 形式:++n。后缀和前缀形式都会使变量值加 1 或减 1。但用在表达式中时,
二者就有区别了。前缀形式会先完成加 1; 而后缀形式会使用变量原来的值。
建议不要在表达式中使用 ++, 因为这样的代码很容易让人闲惑,而且会带来烦人的 bug。
3.5.6位运算符?????????????这个真心看不懂,需要单独找视频来看看
3.6z字符串
3.6.2拼接
String all = String.join(//将/放置在多个字符串中间
" / ", "S", "M",
"L", "XL"
);
System.out.println(all);
//打印信息
S / M / L / XL
3.7输入输出
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Scanner;
public class Test {//测试读取文件,还有更好的方法
final static Integer A=1;
public static void main(String[] args) {
// C:\Users\Administrator\Desktop
String path ="C:\\Users\\Administrator\\Desktop";
try {
Scanner in= new Scanner(Paths.get(path+"\\bookOrder.txt"),"utf-8");//后面参数可以不要,会默认系统编码
while(in.hasNextLine()) {
String str=in.nextLine();
System.out.println(str);
}
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.8流程控制