Java学习之路 之 容易混淆篇

一丶变量名词繁多:全局变量、成员变量、局部变量、静态变量、实例变量、类变量

全局变量(成员变量)
局部变量
成员变量 => 【静态变量(类变量)、实例变量】
类变量的作用:
对于静态变量,除了能在定义它的类内存取,还能直接以“类名.静态变量”的方式在其他类内使用。

二丶数据类型转换

隐式类型转换:
从低级类型向高级类型的转换,系统自动执行,无需进行任何操作。

显示类型转换(强制类型转换):
当把高精度的变量的值赋给低精度的变量时,必须使用显示类型转换运算。
格式:
(类型名)要转换的值,例如:int a = (int)45.23;

三丶Java 中一句相连的字符串不能分开在两行中写,要换行写需要用‘+’连接

举例:
【×】
System.out.println("I like
Java)
【√】
System.out.println(“I like”+
“Java”)

四、比较两个字符串

“==”,比较的是两个字符串的地址,即使值相同,仍然会返回 false;
“equals()”,比较的是两个字符串的值是否相同,相同则返回 true,严格区分大小写;
“equalsIgnoreCase()”,比较的是两个字符串的值是否相同,相同则返回 true,忽略大小写;

五丶compareTo() 与 equals()区别

compareTo()方法只有在equals(Object)方法返回 true 时,才会返回0
特殊情况:str1.compareTo(str2)相等时,则会返回0
正常情况:str1.compareTo(str2),若str1在字典顺序上位于str2之前,返回负数,若在之后返回正数

六丶字符串分割

split(String sign,int limit)
参数一:sign为分隔符
参数二:limit为分割次数
最终分割的次数是 limit-1次

七丶数组和String不是数据类型,它们都为对象

八丶遍历二维数组时,得到的每一个元素都是一个一维数组

例如,foreach遍历一个二维数组:

for(int x[]:arr) {
	for(int e:x) {
					System.out.print(e);
	}
}

九丶数组的基类(数组的操作类)是Arrays

十丶访问权限问题

class AnyClass{
	public void doString(){
		...//方法体
	}
}

虽然 doString()方法被设置为 public 访问权限,但实际上doString()方法访问权限依然与AnyClass 类的访问权限相同

结论: 类的权限设定会约束类成员的权限设定

十一丶两个对象的产生是相互独立的

int i = 0;

public static void main(String[] args){
	Five f1 = new Five();
	Five f2 = new Five();
	f1.i = 60;
}

f1.i的值被改变,不会影响到f2.i的值

结论: 两个对象的产生是相互独立的,两个对象的成员变量存储(指向)的内存区域也是不同的。

十二丶静态成员变量可以改变值

使用两个对象对同一个静态成员变量操作,依然可以改变静态成员变量的值,因为在内存中两个对象同时指向同一块区域

十三丶引用只是存放一个对象的内存地址,并非存放一个对象。

严格地说,引用和对象是不同的,但是可以将这种区别忽略,如可以简单地说book是Book类的一个对象,而事实上应该是book包含Book对象的一个引用。

十四丶对象的比较

“==”运算符,比较的是两个对象引用的地址是否相等。
equals() 方法,比较的是两个对象引用所指的内容是否相等。

十五丶数字格式化

“#”数字有就显示,多了也会显示
“0”数字有就显示,没有就补0(正数在开头补0,负数在末尾补0)。

十六丶继承

在实例化子类对象时,父类无参构造方法将被自动调用。有参构造方法不能被自动调用,用户只能使用 super 关键字显示地调用父类的构造方法。

十七丶对象类型转换

向上转型:把子类对象赋值给父类类型的变量。简单来说就是:从一个比较具体的类到较抽象的转换。
向下转型:将较抽象的类转换为较具体的类。

注意:在做向下转型时,必须使用【显式类型转换】,向编译器指明要将父类对象转换为哪一种类型的子类对象。

十八丶final与staic final的区别

一个被定义为 final 的对象引用只能指向唯一一个对象,不可以将它再指向其他对象。但由于一个对象本身的值是可以改变的,因此为了使一个常量真正做到不可更改,可以将声明常量为 static final。

十八丶异常

如果是 Error、RuntimeException 或它们的子类,可以不使用 throws 关键字来声明要抛出的异常,编译仍能顺利通过,但在运行时会被系统抛出。

十九丶集合的架构

Collection 接口(父类):Set 集合(子类)、List 集合(子类)
Set 集合(父类):HashSet(子类)、TreeSet(子类)
List 集合(父类):ArrayList(子类)、LinkedList(子类)

Map集合(父类):HashMap(子类)、TreeMap(子类)

二十丶输入流:InputStream 和 Reader 区别

InputStream 字节输入流抽象类,是所有字节输入流的父类,用来处理字节的。
Reader 字符输入流抽象类,是所有字符输入流的父类,用来处理字符文本的。

二十一丶输出流:OutputStream 和 Writer 区别

OutputStream 字节输出流抽象类,是所有字节输出流的父类,用来处理字节。
Writer 字符输出流抽象类,是所有字符输出流的父类,用来处理字符文本的。

二十二丶I/O流

输入流:
InputStream 字节-输入流
Reader 字符-输入流
OutputStream 字节-输出流
Writer 字符-输出流
FileInputStream 字节-文件输入流
FileOutputStream 字节-文件输出流
FileReader 字符-文件输入流
FileWriter 字符-文件输出流
BufferedInputStream 字节-缓存输入流
BufferedOutputStream 字节-缓存输出流
BufferedReader 字符-缓存输入流
BufferedWriter 字符-缓存输出流
DataInputStream 字节-数据输入流
DataOutputStream 字节-数据输出流
ZIPOutputStream 字节-压缩输出流
ZIPInputStream 字节-压缩输入流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王睿丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值