【Java】の基础——Java语言FAQ

java八种数据类型

逻辑型

boolean

文本型

char:1字节;

整数型

byte:1字节;-128 ~ 127
short:2字节;-2^15 ~ 2^15-1
int:3字节;-2^31 ~ 2^31-1
long:4字节;-2^63 ~ 2^63-1

浮点型

float:4字节;
double:8字节;

抽象类和接口

一个类只能继承单个类,但是可以实现多个接口
接口强调特定功能的实现,而抽象类强调所属关系
抽象类中的所有方法并不一定要是抽象的,你可以选择在抽象类中实现一些基本的方法。而接口要求所有的方法都必须是抽象的

重载和重写

重载(overload):是函数里面可以有相同的函数名但是参数名、返回值、类型不能相同;或者说可以改变参数、类型、返回值但是函数名字依然不变。
重写(override):在子类继承父类的时候子类中可以定义某方法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方法,而父类相当于被覆盖(重写)了。

equals和==

==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同

Java四种权限修饰符

访问权限   类   包  子类  其他包

public     ∨   ∨   ∨    ∨

protect    ∨   ∨   ∨    ×

default    ∨   ∨   ×     ×

private    ∨   ×    ×     ×

Java版本新特性

java8

  1. Lambda 表达式,允许像对象一样传递匿名函数

  2. Stream API,充分利用现代多核 CPU,可以写出很简洁的代码

  3. Date 与 Time API,最终,有一个稳定、简单的日期和时间库可供你使用

  4. 扩展方法,现在,接口中可以有静态、默认方法。

java9

  1. jshell(java脚本运行环境)
    jshell是Java 9 新增的一个脚本工具,意思是可以在命令行里直接运行java的代码,而无需创建Java文件
  2. modularity(模块化)
    模块化是java 9最大的一个特性,它使得代码组织上更安全。在Package加了一层module

Java中Runnable和Callable有什么不同?

Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在 JDK1.5增加的。它们的主要区别是Callable的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以返回装载有计算结果的Future对象。我的博客有更详细的说明。

什么是FutureTask?

在Java并发程序中FutureTask表示一个可以取消的异步运算。它有启动和取消运算、查询运算是否完成和取回运算结果等方法。只有当运算完 成的时候结果才能取回,如果运算尚未完成get方法将会阻塞。一个FutureTask对象可以对调用了Callable和Runnable的对象进行包 装,由于FutureTask也是调用了Runnable接口所以它可以提交给Executor来执行

Java的Serializable和安卓Parcelable

  1. Serializable(Java自带):
    Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。

  2. Parcelable(android 专用):
    除了Serializable之外,使用Parcelable也可以实现相同的效果,
    不过不同于将对象进行序列化,Parcelable方式的实现原理是将一个完整的对象进行分解,
    而分解后的每一部分都是Intent所支持的数据类型,这样也就实现传递对象的功能了。

两者对比

1. 在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。

2. Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
3. Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java智能客服问答系统是一种基于Java编程语言的智能客服系统,它可以为客户提供更智能化和个性化的客户服务和支持。下面是一个简要的教程,介绍如何使用Java实现智能客服系统: 1. 首先,需要使用Spring框架来搭建Java Web应用程序,以便实现客户端和服务器之间的通信。 2. 其次,需要使用MySQL数据库来存储客户的信息和历史记录,以便在需要时进行查询和分析。 3. 接下来,需要使用ActiveMQ消息中间件来处理客户端和服务器之间的消息传递,以便实现实时通信和数据同步。 4. 然后,需要使用Redis缓存来提高系统的性能和响应速度,以便快速处理大量的客户请求和数据查询。 5. 最后,需要使用Elasticsearch全文搜索引擎来实现智能问答功能,以便根据客户的问题和历史记录来提供更准确和个性化的答案。 下面是一个简单的Java代码示例,演示如何使用Elasticsearch实现智能问答功能: ```java // 创建Elasticsearch客户端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); // 创建搜索请求 SearchRequest searchRequest = new SearchRequest("faq"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchQuery("question", "如何重置密码")); searchRequest.source(searchSourceBuilder); // 执行搜索请求 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); // 处理搜索结果 SearchHits hits = searchResponse.getHits(); for (SearchHit hit : hits) { String question = hit.getSourceAsMap().get("question").toString(); String answer = hit.getSourceAsMap().get("answer").toString(); System.out.println("Q: " + question); System.out.println("A: " + answer); } // 关闭Elasticsearch客户端 client.close(); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值