Day 003 20210208
昨天看得太晚了,没记录下来,现在记录一遍,就当作是复习这些基础了。
注释
单行注释
// 我是一只猫(//后有一个空格,即“// ”)
多行注释
/*
是一只黑猫(首行“/*”,末行“*”+“/”,中间文本)
*/
文档注释
/**
* @author blackblackcat(作者名)
* @version 1.0(版本号)
* @since 1.8(最早使用的jdk版本)
* @param 参数名
* @return 返回值情况
* @throws 异常抛出情况
*/
标识符
注意不能漏掉";"。
Java所有类名、变量名、方法名都被称为标识符。
所有标识符首字母只能为“AZ,az,$,_”,共54个;
所有标识符其他字母只能为“AZ,az,0~9,$,_”,共64个;
不能使用关键字作为变量名或方法名;
标识符是大小写敏感的;
可以使用中文或拼音,但不建议。
强类型语言,所有变量必须先定义后才能够使用。
数据类型
基本数据类型(primitive type)——八大基本数据类型
数值类型
整数类型
byte 1字节 -27~(27-1)
byte a = 5;
short 2字节 -215~(215-1)
short b = 30;
int 4字节 -231~(231-1)
int c = 50;
long 8字节 -263~(263-1)
long d =1023839929819102090L; // L代表long,不要写成小写的l,以免和数字1混淆。
浮点类型
float 4字节
float i = 1.5F; // F代表float.
double 8字节
double j = 20.0;
注意:float和double可能导致精度丢失,所以最好完全避免使用浮点类型进行比较。
字符类型
char 2字节
char name1 = 'A'; // 一个字母,不能'AB';单引号('A'),而不是双引号("A")。
//
char name2 = '猫'; // 一个汉字,不能'熊猫';单引号('猫'),而不是双引号("猫")。
boolean类型(布尔类型)
boolean 1位(不是一字节) 只有true和false两个值。
boolean flag1 = true;
boolean flag2 = false;
注意点
数据之间可以用_划分,而不影响数值。
int = 10_0000_0000
引用数据类型(reference type)
类
接口
数组
数据扩展类型——进制
总 | 二进制 | 八进制 | 十进制 | 十六进制 |
---|---|---|---|---|
前缀 | 0b | 0 | 无 | 0x |
int e = 10; // e = 10
int f = 0b10; // f = 2
int g = 010; // g = 8
int h = 0x10; // h = 16
类型转换
低---------------------------------------------------------------------------->高
byte, short, char-----> int-----> long-----> float-----> double
运算时,不同类型的数据先转换为同一类型,然后进行运算。
强制类型转换
从高到低强制转换
int k = 128
byte m = (byte)k // 强制转换,内存溢出
// (类型)变量名
自动类型转换
从低到高自动转换
int k = 128
double n = k // 自动转换
注意点
- 不能对布尔值进行转换。
- 不能把对象类型转换为不相干的类型。
- 高到低强制转换。
- 在转换过程中可能遇到内存溢出,或者精度问题。
变量
变量要素包括变量名、变量类型和作用域。
变量名采用lower驼峰式,类名采用Upper驼峰式。
驼峰式:除首词外单词首字母大写。
lower驼峰式:首词首字母小写,除首词外单词首字母大写。
Upper驼峰式:首词首字母大写,除首词外单词首字母大写。
包名全小写。
类变量
有"static"关键词
实例变量
无"static"关键词
局部变量
public class Variable{
static int allClicks = 0; // 类变量 static
String str = "hello world"; // 实例变量:从属于对象。如果不存在初始化值,则基本类型默认为0,0.0,u0000,false(不是true),(0,0.0,u0000,false都是0);非基本类型默认为null(null也是0)。
public void method(){
int i = 0; // 局部变量:必须申明初始值
}
}
常量(Constant)
初始化(initialize)后不能再改变值。
final double PI = 3.14; // final 类型 常量名 = 值
常量名使用大写字母,之间用_连接。
static final double CAT_CAT_CAT = 3; // static与final为修饰符,不存在先后顺序
final static double CAT_CAT_CAT = 3;
变量名,类名,方法名,常量名均需要见名知意。
运算符
优先级:多用"()"
算数运算符
二元运算符
“+”, “-”, “*”, “/”
int o = 10;
int p = 20;
int q = 30;
int r = 50;
System.out.println(o+p);
System.out.println(o-q);
System.out.println(p*q);
System.out.println(o/r); // 0 原因:o,r均是int型的,o/r = 0.2被转化为int型,故为0。
System.out.println(o/(double)r); // 0.2
// 如果参与计算的数据最高的类型为double类型,则结果为double类型;
// 如果参与计算的数据最高的类型为float类型,则结果为float类型;
// 如果参与计算的数据最高的类型为long类型,则结果为long类型;
// 如果参与计算的数据均不为long类型,则结果为int类型。
一元运算符(自增、自减)
“++”, “–”
int u = 1;
System.out.println(u); // 1
int v = u++; // 先把v赋值为u,再令u = u + 1;
System.out.println(u); // 2
System.out.println(v); // 1
int w = ++u; // 先令u = u + 1;再把w赋值为u
System.out.println(u); // 3
System.out.println(w); // 3
取模
“%”
输出余数
int s = 213;
int t = 5;
System.out.println(s%t); // 3
幂运算
double pow = Math.pow(2,3); // 2^3
赋值运算符
关系运算符
“>”, “<”, “>=”, “<=”, “==”, “!=”, “instanceof”
输出为布尔值 true false
逻辑运算符
“&&”, “||”, “!”(与,或,非)
boolean x = true;
boolean y = false;
System.out.println(x && y); // false x与y
System.out.println(x || y); // true x或y
System.out.println(!(x && y)); // true 非(x与y)
短路运算
在与运算"&&“中,由于只要有一边为false,结果就为false,故当”&&"左侧为false时,不会计算右侧是true还是false,而是直接得出结果。验证方法:
int z = 5;
boolean aa = (z < 4) && (z++ < 4) // (z < 4)为false,故aa直接为false,若检查(z++ < 4)是否为false,则z = z + 1,最后得出z值为5;否则最后得出z值为4.
System.out.println(z) // 4 即没有检验(z++ < 4)是否为false。
位运算符
“&”, “|”, “^”, “~”(与,或,异或,非)
/*
A = 1100 0110;
B = 1010 0001;
A&B = 1000 0000; 与 比较A与B的每一位,同为1才为1。
A|B = 1110 0111; 或 比较A与B的每一位,同为0才为0。
A^B = 1001 1000; 异或 比较A与B的每一位,相同才为1。
~B = 0101 1110; 非 此处为非B,将B的每一位取非。
*/
“>>”, “<<”(右移,左移)
由于计算机不能直接做乘除法,因此左移和右移是效率极高的方式。
/*
<< 左移,在末尾加个0,相当于乘以2。
>> 右移,删除末尾位,相当于除以2再舍去小数部分。
*/
System.out.println(5>>1); // 2 5与1所在的位置不能为float类型与double类型。
条件运算符
三元运算符
“?”+":"
// x ? y : z 若x = true,则执行y;否则执行z。
int af = 10;
System.out.println(af < 20 ?"a":"b"); // a
扩展赋值运算符
“+=”, “-=”, “*=”, “/=”
“偷懒的写法”
int ab = 10;
int ac = 20;
ab += ac; // ab = ab + ac;
ab -= ac; // ab = ab - ac;
ab *= ac; // ab = ab * ac;
ab /= ac; // ab = ab / ac;
包机制
package pkg1[.pkg2[.pkg3...]]; // 一般利用公司域名的倒置作为包名,如 com.baidu.www 防止重复
// 导入包
import package1[.package2...].(classname|*); // 写在整个类的最上面,且在package的下面。
Tips
-
输出分割线
System.out.println("===============================")
-
转义字符
\t 制表符
\n 换行
。。。
-
复制该行代码至下一行 ctrl + D,(鼠标点在行末尾,不选中。)
-
字符串连接符"+",只要"+"两边至少有一边是String类型,则会将另一边也转换为String类型,并连接。
int ad = 10; int ae = 20; System.ou.println(""+ad+ae); // 1020 先""+ad,将ad转换成为了String类型,变为10,String类型的10再和int类型的20相加,将ae转换为String类型,得到结果为String类型的1020。 System.ou.println(ad+ae+""); // 30 先ad+ae,两边均是int类型的,得到结果int类型的30,再与""相加,将int类型的30转换为String类型的30,得到结果为String类型的30。
-
用命令行生成(windows+R CMD)
javadoc Demo08.java // 在Demo08的地址后输入这段,Demo08为项目名称。 javadoc -encoding UTF-8 -charset UTF-8 Demo.java // 中间一段是为了防止项目中的中文生成乱码。