–>JAVA SE (1)
知识点数据参考菜鸟教程
基本数据类型
变量,意味着申请内存。创建变量时,需要在内存中申请空间。根据变量的类型为变量分配空间,分配之后只能存储该类型数据。
两大数据类型:内置数据类型和引用数据类型。
内置数据类型:8种基本类型。6种数字类型(4种整数型:byte,short,int,long; 2种浮点型:float, double ),1种字符型(char),1种布尔型(boolean)。其中,byte是1个字节、8bit、有符号的、以二进制补码表示的整数。整数类型的默认值是0,但是其中long比较特殊为0L。浮点数的默认类型为double,因此在定义浮点数的时候需要在浮点数后加f。如:
float f1 = 0.99f
bollean类型的默认值是false。
引用类型
类似于c/c++的指针,变量值为一个地址。java里指向某一对象。因此,引用类型指向一个对象,指向对象的变量为引用变量。对象、数组即为引用数据类型。
默认值:null
区别:基本数据类型,在声明变量的时候,系统给变量分配了内存空间。但是对于引用类型,只给变量分配了引用
常量
在程序运行时不能被修改。在java中用final修饰,一般大写。
另外若定义八进制、十进制的常量,则前缀0表示8进制,前缀0x表示十六进制。
final int DEC = 102;
final int OCT = 0122;
final int HEX = 0x111;
自动类型转换
整型、字符型和常量可以混合运算。运算中,不同的数据类型先转化为同一类型,然后进行运算。转换顺序为从低级到高级。如下:
byte-- short/char --int --long-- float -- double
容量大的类型转换为容量小的类型时即从高向低转时需要强制类型转换。
修饰符
分为访问修饰符和非访问修饰符
访问修饰符
保护对类、变量、方法和构造方法的访问。支持4种访问权限:default、public、protected、private。没个访问修饰符可修饰的对象不尽相同。
default:什么也不加,可修饰的对象为类、接口、变量、方法。同一包内的类可以访问。
此时,接口里的变量隐式声明为public static final,而方法默认访问权限为public。
public:可修饰对象为类、接口、变量、方法。所有类均可访问。
若几个互相访问的类不在一个包内,则应导入相应public类所在的包。java的main方法必须用public修饰,否则解释器不能运行该类。
protected:可修饰的对象为类、接口 、变量、方法(不能修饰外部类,外部类可用)同一包内的类可以访问,其他包的该类的子类也可以访问。
private:可修饰的对象为类、接口、变量、方法(不能修饰外部类,外部类可用)只有自己类可访问。
访问控制和继承:
方法继承的原则:
- 父类声明为public的方法在子类中也应该为public修饰
- 父类声明为protected的方法在子类中为protected或者public修饰。
- 父类中声明为private的方法,不能被继承。
为了实现更多的功能,加入了非访问修饰符:static、final、abstract、synchronized和volatile。
static修饰符:表现为类变量(局部变量不能用static修饰)和类方法。修饰类时只能修饰内部类。
final修饰符:变现为final变量(必须显示指定初始值,并切一旦指定初始值之后便不能被改变,通常和static并用)、final方法(可被子类继承、但是不能被子类修改–也是final修饰的目的)、final类(不能被继承)
abstract修饰符:唯一目的是将此类进行扩充,所以不能和final并用。适用类、接口、方法。表现为抽象类和抽象方法。抽象类不能用来实例化对象。一个类若包含抽象方法,则必须被abstract修饰。抽象类中可以有非抽象方法,因为它抽象的不彻底(抽象的彻底的是接口interface),也可以不包含抽象方法。抽象方法,没有任何实现,不能同时被final和abstract修饰;抽象方法的声明用分号结尾。
synchronized:被synchronized修饰的方法同一时间只能被一个线程访问。可以和4个访问修饰符结合。
volatile:被volatile修饰的成员变量每次被线程访问的时候会强制从共享内存中重新读取该成员变量的值,若发现变化,则更新变量的值。
运算符
- 算术
- 关系
- 位
- 逻辑
- 赋值
- 其他……
算术
操作符:+、-、、/、%、++、–。
注意加法的结合顺序:从左到右,左侧的计算完毕之后,才会计算右侧。
关系
==、!=、>、<、>=、<=。
位运算
&、|、(亦或,**相同为0,不同为1**)、~、<<(左移增大相应的2n倍)、>>、>>>。
应用于byte、short、int、long、char。位运算符作用于所有的位上(1字节有8位,运算时先把相应的数字转换为二进制)。
逻辑
&&(逻辑与)、||(逻辑或)、!(逻辑非)。
赋值
=、+=、-=、=、/=、%=、<<=、>>=、&=、^=、|=、。
条件运算符(又称为三元运算符)
?:
变量a = 表达式 ?(表达式为真)a1:(表达式 )a2
instanceof
操作对象实例,检查是否是一个特定类型(类或者接口)。注意判断一个实例引用的类型时,使用的是实际类型,而不是声明的类型。
程序结构
顺序
顺序结构的语句只能执行一次。
循环
- while
- do…while(布尔表达式)表达式为真,才能继续循环
- for(java5中引入了一种用于数组的增强型for循环)
所有的循环都能用while循环表示(while能实现的for循环不一定能实现–for循环适合已知循环次数的循环,但是while不用指定循环次数)。
增强for循环:
//Name是一个数组
//将Name数组中的每个元素一次打印出
for (String name : Name){
System.out.println(name);
}
循环涉及到两个关键字:break、continue。
break,终止循环,执行循环之后的下一句。
continue,结束当前循环,开始下一次循环。
分支
//if...else型
if(布尔表达式){
//表达式为真,执行此句
}else{
//表达式为假,执行else的语句
}
//---------------------------------
//if...else if...else if...else型
if(表达式1){
}else if(表达式2){ //若表达式2为真,则跳过后面的else if和else
}else if(表达式3){
}else{
}
//switch case
//变量类型为byte、short、int、char.注意没有long。从se7开始,支持字符串String类型,此时case标签必须为字符串常量或者字面量。
switch (a){
case a1:
//语句
break;//可选,但是若没有case语句则会将后面的语句全部执行直至遇到break
case a2;
//语句
break;//可选
...
default:
//语句
}
//switch case执行顺序,1先匹配到相应的case,2匹配到case后遇到break跳出,不然一直执行后面case里语句。
Number & Math 类
Number
java为内置数据类型提供了对应的包装类。
int-Integer
short-Short
long-Long
byte-Byte
double-Double
float-Float
boolean-Boolean
char-Character
有编译器特别支持的包装称为装箱。当内置数据类型被当做对象使用的时候,编译器会把内置类型装箱为包装类。编译器也可以吧一个对象拆箱为内置类型。
所有的包装类均是抽象类Number的子类。Number类属于java.long包。
Math
Math包含了用于执行基本数学运算的属性和方法。Math的方法都被定义为static形式。可以直接**Math.方法()**调用。
方法 | 描述 |
---|---|
xxxValue | 将Number对象转换为xxx数据类型的值并返回 |
compareTo() | 将Number对象与参数进行比较 |
equals() | 判断Number对象是否与参数相等 |
valueOf() | 返回一个Number对象,由参数的内置数据类型决定 |
toString() | 以字符串形式返回值 |
parseInt() | 将字符串解析为int类型 |
abs() | 返回参数的绝对值 |
ceil() | ceil-天花板,返回大于等于参数的最小的整数,返回类型为double型 |
floor() | 返回 <= 参数的最大的整数,返回类型为double |
min() | 返回2个数字中的最小值 |
pow() | 返回第一个参数的第二个参数的次方 |
exp() | 返回e的参数次方 |
round() | 返回Math.floor(x+0.5),将原来的数字加上0.5在向下取整 |
random() | 返回一个随机数,返回为0.0 <= Math.random() < 1.0,小于1。 |
static Integer valueOf(int i)
static Integer calueOf(Stirng s)
Character类
Character类用于对单个字符进行操作。Character类在对象中包装一个基本类型char的值。Character类提供了一系列方法操纵字符。
//使用Character的构造方法构造一个Character对象。
//java9之后弃用,Character ch = Character.valueOf('a');用的多。
Character char1 = new Character("a");
//或者使用装箱--将字符b装箱到Character对象char2中
Character char2 = 'b';
Character方法
方法 | 描述 |
---|---|
isLetter() | 是否是一个字母 |
isDigit() | 是否是一个数字字符 |
isWhitespace() | 是否是一个空白字符 |
isUpperCase() | 是否是大写字母 |
isLowerCase() | 是否是小写字母 |
toUpperCase() | 指定字母的大写形式 |
toLowerCase() | 指定字母的小写形式 |
toString() | 返回字符的String对象,长度仅为1的字符串 |
转移序列
转义序列 | 描述 |
---|---|
\t | 文中插入tab键 |
\b | 文中插入后退键 |
\r | 文中插入回车 |
\’ | 文中插入单引号 |
\" | 文中插入双引号 |