资讯专栏INFORMATION COLUMN

JAVA基础

0xE7A38A / 1636人阅读

摘要:当方法被重写时,通常有必要重写方法,以维护方法的常规协定,该协定声明相等对象必须具有相等的哈希码。如实现一个哈希表,为了成功地在哈希表中存储和检索对象,用作键的对象必须实现方法和方法。必须保证相等的对象也相等,因为哈希表通过检索对象。

概念

修饰符:
private,仅只能在设置了该权限的类中访问,利用这个访问权限,表现出封装思想。
default,默认的访问权限,也是可以省略的访问权限,它不仅能在设置了该权限的类中访问,也可以在同一包中的类或子类中访问。
protected,除了具有default的访问权限外,还可以在不同包中所继承的子类访问。
public,不仅可以是同一个类或子类,还是同一个包中的类或子类,又还是不同包中的类或子类,都可以访问。

逻辑运算符:
&&、||、是短路逻辑操作符,即根据操作符左边布尔值决定逻辑运算是否继续;
&、|、是非短路逻辑操作符。

移位运算符:
<<      左移运算符,num << 1,相当于num乘以2
>>     右移运算符,num >> 1,相当于num除以2
>>>     无符号右移,符号位以0补,空位都以0补齐

==、equals()、hashCode()

public class Object {
    ......
    public native int hashCode();
    
    public boolean equals(Object obj) {
        return (this == obj);
    }
    ......
}

==就是比较对象在jvm内存地址。
equals():若对象没有重写equals(),则用的就是Object的equals(),与==相同。
hashCode():若对象没有重写hashCode(),则用的就是Object的hashCode(),返回对象在jvm内存地址。

对与String类型,由于其重写了hashcode()和equals(),只要String内容相同,hashcode()返回相同,equals()返回true。

当equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。如Hashtable实现一个哈希表,为了成功地在哈希表中存储和检索对象,用作键的对象必须实现 hashCode 方法和 equals 方法。必须保证hashCode相等的对象equals也相等,因为哈希表通过hashCode检索对象。

特性

数据友好表示

用下划线分割:

long maxLong = 0x7fff_ffff_ffff_ffffL; 
float pi = 3.14_15F;  
int x2 = 5_000_000; 

二进制标识

int, short,long,byte类型都可以用二进制表示  ,用0b或0B开头。

byte aByte = (byte) 0b00100001;   //8位 
short aShort = (short) 0b1010000101000101;  // 16位
Int anInt1 = 0b10100001010001011010000101000101;  // 32位  
long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;  // 64位  (末尾要加L)

Try-with-resource

实现java.lang.AutoCloseable接口的资源都可以放到try中(Closeable继承AutoCloseable,所以实现Closeable接口的资源也可以),跟finally里面的关闭资源类似, 按照声明逆序关闭资源 。try()中声明的资源被隐式声明为final

try-with-resources 可以有 catch 和 finally 块, catch 或 finally 块都是在声明的资源被关闭以后才运行。
try-with-resources会出现两个异常:try块里的异常、close函数里抛出的异常。如果在调用close函数时出现异常,那么前面的异常就被称为Suppressed Exceptions,Throwable.addSuppressed()会把try块里的异常保存起来,当捕捉到close的异常时,就可以调用Throwable.getSuppressed()来取出close之前的异常。

Catch多个异常

try {
    testThrows();
} catch (IOException | SQLException ex) {
    throw ex;
}

泛型推断

//new部分后面的泛型类型,只用<>就可以了。
List>> strList = new ArrayList<>();

class MyClass {
     MyClass(T t) {
        // ...
    }
}
//具有泛型构造器的泛型类的实例化:
MyClass myObject = new MyClass<>("");    

一个表达式的目标类型(Target Type)指的是一种编译器根据表达式出现的位置而需要的正确的数据类型。

void processStringList(List stringList) { 
// process stringList 
}   
processStringList(Collections.emptyList());    //java8的调用
processStringList(Collections.emptyList());    //java7的调用,没有目标类型概念。

processStringList方法入参需要List(就是Collections.emptyList()的Target Type),所以编译器推断Collections.emptyList()返回的List中的T一定是String。
目标类型的使用在Lambda表达式中优势最为明显。

在可变参数方法中传递非具体化参数

堆污染(Heap pollution)指一个变量引用被指向另外一个不是相同类型的变量。

//由于类型擦除,编译器会将elements转换为Object[] elements,这时,堆污染将可能产生。
@SafeVarargs     //不提示堆污染警告
public static  void addToList(List listArg, T... elements) {    //elements编译实现为数组
    for (T x : elements) {
        listArg.add(x);
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67274.html

相关文章

  • Java学习路线总结,搬砖工逆袭Java架构师(全网最强)

    摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...

    Scorpion 评论0 收藏0
  • java&javaweb学习笔记(汇总)

    摘要:我的学习笔记汇总标签笔记分为两大部分和笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解基础语法,想进一步深入学习的人如果觉得不错,请给,这也是对我的鼓励,有什么意见欢迎留言反馈目录基础巩固笔记反射基础巩固笔记泛型基础巩 我的java&javaweb学习笔记(汇总) 标签: java [TOC] 笔记分为两大部分:javase和javaweb javase javawe...

    yagami 评论0 收藏0
  • JavaSE与数据结构基础知识系列——专栏导航

    ⭐️前面的话⭐️ 大家好!这是Java基础知识与数据结构博文的导航帖,收藏我!学习Java不迷路! ?博客主页:未见花闻的博客主页 ?欢迎关注?点赞?收藏⭐️留言? ?本文由未见花闻原创,CSDN首发! ?首发时间:?2021年11月11日? ✉️坚持和努力一定能换来诗与远方! ?参考书籍:?《Java核心技术卷1》,?《Java核心技术卷2》,?《Java编程思想》 ?参考在线编程网站:?牛...

    Cc_2011 评论0 收藏0
  • Java编程需要注意的地方

    摘要:学编程真的不是一件容易的事不管你多喜欢或是多会编程,在学习和解决问题上总会碰到障碍。熟练掌握核心内容,特别是和多线程初步具备面向对象设计和编程的能力掌握基本的优化策略。   学Java编程真的不是一件容易的事,不管你多喜欢或是多会Java编程,在学习和解决问题上总会碰到障碍。工作的时间越久就越能明白这个道理。不过这倒是一个让人进步的机会,因为你要一直不断的学习才能很好的解决你面前的难题...

    leanxi 评论0 收藏0
  • 那些年,我的前端/Java后端书单

    摘要:全文为这些年,我曾阅读深入理解过或正在阅读学习即将阅读的一些优秀经典前端后端书籍。当然,如果您喜欢这篇文章,可以动手点点赞或者收藏。 全文为这些年,我曾阅读、深入理解过(或正在阅读学习、即将阅读)的一些优秀经典前端/Java后端书籍。全文为纯原创,且将持续更新,未经许可,不得进行转载。当然,如果您喜欢这篇文章,可以动手点点赞或者收藏。 基础 基础书籍 进阶 进阶阶段,深入学习的书...

    fxp 评论0 收藏0

发表评论

0条评论

0xE7A38A

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<