java常用API
- 格式:doc
- 大小:265.00 KB
- 文档页数:27
⽅法声明 功能描述int indexOf(int ch)返回指定字符在此字符串中第⼀次出现处的索引int lastIndexOf(int ch)返回指定字符在此字符串中最后⼀次出现处的索引int indexOf(String str)返回指定⼦字符串在此字符串中第⼀次出现处的索引int lastIndexOf(String str)返回指定⼦字符串在此字符串中最后⼀次出现处的索引char charAt(int index)返回字符串中index 位置上的字符,其中,index 的取值范围是0-(字符串长度-1)boolean endsWith(String suffix)判断此字符串是否以指定的字符串结尾int length()返回此字符串的长度boolean equals(Object anObject)将此字符串与指定的字符串⽐较boolean isEmpty()当且仅当字符串长度为0时返回true boolean startsWith(String prefix)判断此字符串是否以指定的字符串开始boolean contains(CharSequence cs)判断此字符串中是否包含指定的字符序列String toLowerCase()使⽤默认语⾔环境的规则将String 中的所有字符都转换为⼩写String toUpperCase()使⽤默认语⾔环境的规则将String 中的所有字符都转换为⼤写static String valueOf(int i)返回int 参数的字符串表⽰形式char[] toCharArray()将此字符串转换为⼀个字符数组String replace(CharSequence oldstr,CharSequence newstr)返回⼀个新的字符串,它是通过⽤newstr 替换此字符串中出现的所有oldstr 得到的String[] split(String regex)根据参数regex 将原来的字符串分割为若⼲⼦字符串JAVAAPI (⼀)String 类和StringBuffer 类1.String 类和StringBuffer 类在程序中经常会⽤到字符串,所谓的字符串就是指⼀连串的字符,它是由多个单个字符连接⽽成的。
ElasticSearch6.8常⽤查询以及JavaAPI索引创建public void createIndex(){//创建请求CreateIndexRequest request = new CreateIndexRequest("myindex");//settingsSettings settings = Settings.builder().put("number_of_shards", "1").put("number_of_replicas", "1").build(); request.settings(settings);//mappingrequest.mapping(FileUtil.readResourceFile("mapping/mapping.json"), XContentType.JSON);//aliasrequest.alias(new Alias("haha_index"));//超时时间request.setTimeout(TimeValue.timeValueSeconds(5));//主节点超时时间request.setMasterTimeout(TimeValue.timeValueSeconds(5));//设置创建索引API返回响应之前等待活动分⽚的数量request.waitForActiveShards(ActiveShardCount.from(1));//别名request.alias(new Alias("myhahaindex"));//执⾏try {CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);//获取数据System.out.println(response.isAcknowledged());System.out.println(response.isShardsAcknowledged());System.out.println(response.index());} catch (IOException e) {e.printStackTrace();}}对应请求PUT myindex?master_timeout=5s&wait_for_active_shards=1&timeout=5s{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings":{"mymapping": {"properties": {"name": {"type": "text"},"description": {"type": "text","analyzer":"english","search_analyzer":"english"},"pic":{"type":"text","index":false},"studymodel":{"type":"text"}}}},"aliases": {"myhahaindex": {}}}搜索搜索全部GET /book/_search{"query": {"match_all": {}},"_source": ["name","description"]}javaSearchRequest request = new SearchRequest("book");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchAllQuery());//获取指定字段searchSourceBuilder.fetchSource(new String[]{"name","description"},null);request.source(searchSourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);SearchHits hits = response.getHits();SearchHit[] searchHits = hits.getHits();for (SearchHit searchHit : searchHits) {System.out.println(searchHit.getSourceAsString());Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();System.out.println(sourceAsMap);}分页查询GET /book/_search{"query": {"match_all": {}},"_source": ["name","description"],"from": 0,"size": 2}javaSearchRequest request = new SearchRequest("book");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchAllQuery());//获取指定字段searchSourceBuilder.fetchSource(new String[]{"name","description"},null);searchSourceBuilder.from(1);searchSourceBuilder.size(2);request.source(searchSourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);SearchHits hits = response.getHits();SearchHit[] searchHits = hits.getHits();for (SearchHit searchHit : searchHits) {System.out.println(searchHit.getSourceAsString());Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();System.out.println(sourceAsMap);}ids查询GET /book/_search{"query": {"ids": {"values": [1,2,10]}}}javasearchSourceBuilder.query(QueryBuilders.idsQuery().addIds("1","2","10"));matchGET /book/_search{"query": {"match": {"description": "java程序员"}}}javasearchSourceBuilder.query(QueryBuilders.matchQuery("description","java程序员")); multi_matchsearchSourceBuilder.query(QueryBuilders.multiMatchQuery("java","name","description")); javasearchSourceBuilder.query(QueryBuilders.multiMatchQuery("java","name","description")); bool#filter不参与相关度评分GET /book/_search{"query": {"bool": {"must": [{"match": {"description": "java程序员"}}],"filter": {"range": {"price": {"gte": 80,"lte": 90}}}}}}javaSearchRequest request = new SearchRequest("book");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();boolQueryBuilder.must(new MatchQueryBuilder("description","java程序员"));boolQueryBuilder.filter(new RangeQueryBuilder("price").gte(80).lte(90));searchSourceBuilder.query(boolQueryBuilder);request.source(searchSourceBuilder);SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT); System.out.println(searchResponse);GET /book/_search{"query": {"bool": {"must": [{"match": {"description": "java程序员"}},{"range": {"price": {"gte": 80,"lte": 90}}}]}}}javaSearchRequest request = new SearchRequest("book");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();boolQueryBuilder.must(new MatchQueryBuilder("description","java程序员"));boolQueryBuilder.must(new RangeQueryBuilder("price").gte(80).lte(90));sortGET /book/_search{"query": {"match_all": {}},"sort": [{"price": {"order": "desc"}}]}javaSearchRequest request = new SearchRequest("book");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchAllQuery());searchSourceBuilder.sort("price", SortOrder.DESC);分组聚合查询tvs⽂档的映射1按照颜⾊分组,计算每个颜⾊卖出的个数GET /tvs/_search{"size": 0,"aggs": {"color_group": {"terms": {"field": "color"}}}}javaSearchRequest request = new SearchRequest("tvs");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.size(0);searchSourceBuilder.query(QueryBuilders.matchAllQuery()); AggregationBuilder aggregationBuilder = AggregationBuilders.terms("color_group") .field("color");searchSourceBuilder.aggregation(aggregationBuilder);request.source(searchSourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT); Aggregations aggregations = response.getAggregations();Terms terms = aggregations.get("color_group");List<? extends Terms.Bucket> buckets = terms.getBuckets();for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey());System.out.println(bucket.getDocCount());}2按照颜⾊分组,计算每个颜⾊卖出的个数,每个颜⾊卖出的平均价格GET /tvs/_search{"size": 0,"aggs": {"color_group": {"terms": {"field": "color"},"aggs": {"avg_price": {"avg": {"field": "price"}}}}}}java:SearchRequest request = new SearchRequest("tvs");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.size(0);searchSourceBuilder.query(QueryBuilders.matchAllQuery());AggregationBuilder aggregationBuilder = AggregationBuilders.terms("color_group").field("color");AvgAggregationBuilder avgAgg = AggregationBuilders.avg("avg_price").field("price"); aggregationBuilder.subAggregation(avgAgg);searchSourceBuilder.aggregation(aggregationBuilder);request.source(searchSourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT); Aggregations aggregations = response.getAggregations();Terms terms = aggregations.get("color_group");List<? extends Terms.Bucket> buckets = terms.getBuckets();for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey());System.out.println(bucket.getDocCount());Aggregations subAggs = bucket.getAggregations();Avg avg = subAggs.get("avg_price");System.out.println(avg.getValue());}3按照颜⾊分组,计算每个颜⾊卖出的个数,以及每个颜⾊卖出的价格平均值、最⼤值、最⼩值、总和GET /tvs/_search{"size": 0,"aggs": {"color_group": {"terms": {"field": "color"},"aggs": {"avg_price": {"avg": {"field": "price"}},"max_price":{"max": {"field": "price"}},"min_price":{"min": {"field": "price"}},"sum_price":{"sum": {"field": "price"}}}}}}javaSearchRequest request = new SearchRequest("tvs");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.size(0);searchSourceBuilder.query(QueryBuilders.matchAllQuery());AggregationBuilder aggregationBuilder = AggregationBuilders.terms("color_group").field("color");AvgAggregationBuilder avgPrice = AggregationBuilders.avg("avg_price").field("price"); MaxAggregationBuilder maxPrice = AggregationBuilders.max("max_price").field("price"); MinAggregationBuilder minPrice = AggregationBuilders.min("min_price").field("price"); SumAggregationBuilder sumPrice = AggregationBuilders.sum("sum_price").field("price"); aggregationBuilder.subAggregation(avgPrice);aggregationBuilder.subAggregation(maxPrice);aggregationBuilder.subAggregation(minPrice);aggregationBuilder.subAggregation(sumPrice);searchSourceBuilder.aggregation(aggregationBuilder);request.source(searchSourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);Aggregations aggregations = response.getAggregations();Terms terms = aggregations.get("color_group");List<? extends Terms.Bucket> buckets = terms.getBuckets();for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey());System.out.println(bucket.getDocCount());Aggregations subAggs = bucket.getAggregations();Avg avg = subAggs.get("avg_price");System.out.println(avg.getValue());Max max = subAggs.get("max_price");System.out.println(max.getValue());Min min = subAggs.get("min_price");System.out.println(min.getValue());Sum sum = subAggs.get("sum_price");System.out.println(sum.getValue());}4按照售价价格划分范围(2000),算出每个区间的销售总额GET /tvs/_search{"size": 0,"aggs": {"price_scope": {"histogram": {"field": "price","interval": 2000},"aggs": {"sum_price": {"sum": {"field": "price"}}}}}}javaSearchRequest request = new SearchRequest("tvs");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.size(0);searchSourceBuilder.query(QueryBuilders.matchAllQuery());HistogramAggregationBuilder histogramAggregationBuilder = AggregationBuilders.histogram("price_scope").field("price").interval(2000); SumAggregationBuilder sumAggregationBuilder = AggregationBuilders.sum("sum_price").field("price"); histogramAggregationBuilder.subAggregation(sumAggregationBuilder);searchSourceBuilder.aggregation(histogramAggregationBuilder);request.source(searchSourceBuilder);SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT);Aggregations aggregations = searchResponse.getAggregations();Histogram histogram = aggregations.get("price_scope");List<? extends Histogram.Bucket> buckets = histogram.getBuckets();for (Histogram.Bucket bucket : buckets) {System.out.println(bucket.getKey());System.out.println(bucket.getDocCount());Sum sum = bucket.getAggregations().get("sum_price");System.out.println(sum.getValue());}5计算每个季度的销售总额,并按照总额降序查询GET /tvs/_search{"size": 0,"aggs": {"quarters_price": {"date_histogram": {"field": "sold_date","interval": "quarter","format": "yyyy-MM-dd","order": {"sum_price": "desc"}},"aggs": {"sum_price": {"sum": {"field": "price"}}}}}}javaSearchRequest request = new SearchRequest("tvs");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.size(0);searchSourceBuilder.query(QueryBuilders.matchAllQuery());DateHistogramAggregationBuilder histogramAggregationBuilder = AggregationBuilders.dateHistogram("quarters_price") .field("sold_date").dateHistogramInterval(DateHistogramInterval.QUARTER).format("yyyy-MM-dd").order(BucketOrder.aggregation("sum_price",false));SumAggregationBuilder sumPrice = AggregationBuilders.sum("sum_price").field("price");histogramAggregationBuilder.subAggregation(sumPrice);searchSourceBuilder.aggregation(histogramAggregationBuilder);request.source(searchSourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);Histogram histogram = response.getAggregations().get("quarters_price");List<? extends Histogram.Bucket> buckets = histogram.getBuckets();for (Histogram.Bucket bucket : buckets) {System.out.println(bucket.getKeyAsString());System.out.println(bucket.getDocCount());Sum sum = bucket.getAggregations().get("sum_price");System.out.println(sum.getValue());}。
JavaAPI的常⽤包
1、ng 语⾔包
Java语⾔的核⼼类库包含Java语⾔必不可少的系统类定义,包括Object类、基本数据类型封装类、数学运算、字符串、线程、异常处理等2、java.util 实⽤包
⼯具类库,包含⽇期类、集合类等
3、java.awk 抽象窗⼝类
提供构建图形⽤户界⾯的类库,包含组件、时间及绘图功能
4、java.applet
实现applet应⽤程序
5、java.text ⽂本包
Format、DateFormat、SimpleDateFormat等类提供各种⽂本或⽇期格式
6、java.io 输⼊/输出流包
提供标准输⼊/输出及⽂件操作类库
7、 ⽹络包
提供与⽹络编程有关的类库,包括Socket通信⽀持、Internet访问⽀持等
8、java.sql
提供数据库应⽤功能的类库
9、javax.swing
扩充和增强⽤户图形界⾯功能的类库。
在Java中,Web API调用是一项非常常见的任务。
Web API是一种由HTTP 协议提供服务的接口,它允许不同的应用程序之间进行通信。
在本文中,我将以从简到繁、由浅入深的方式来探讨Java中WebAPI调用的方式,并共享我对这个主题的个人观点和理解。
1. URLConnection类我们可以使用Java内置的URLConnection类来进行简单的Web API 调用。
这个类提供了一种简单而基本的方式来打开一个到指定URL资源的通信信息,并可以读取和写入该资源。
它适用于简单的GET和POST请求,但在处理复杂的响应和错误处理方面就显得力不从心了。
2. Apache HttpClientApache HttpClient是一个强大的Java HTTP客户端库,它为开发人员提供了更丰富的功能和更灵活的方式来进行Web API调用。
相比于URLConnection类,HttpClient具有更强大的功能,例如支持HTTPS、重定向、HTTP代理等。
它还提供了更友好的API,使得我们可以更轻松地处理响应和错误。
3. Spring RestTemplate作为Spring框架的一部分,RestTemplate是一种简化了的HTTP客户端工具,它提供了一种更优雅的方式来进行Web API调用。
通过RestTemplate,我们可以很容易地实现GET、POST、PUT、DELETE 等HTTP方法的调用,并且可以方便地处理响应和错误。
4. Reactive WebClient随着Spring 5引入了响应式编程范式,Reactive WebClient成为了一种新的选择。
它使用了Reactor库,提供了一种基于响应式流的方式来进行Web API调用。
这种方式在处理大量并发请求时具有很大的优势,并且可以方便地进行响应式编程。
总结回顾:在本文中,我从URLConnection类开始介绍了Java中Web API调用的方式,然后逐步深入介绍了Apache HttpClient、Spring RestTemplate和Reactive WebClient。
Java API中文文档一、Java API的概述Java API (Application Programming Interface),即Java应用程序接口,是Java编程语言提供的一系列类库和接口,以帮助开发者更加便捷地进行开发。
Java API提供了大量的类和方法,涵盖了各种领域的功能,如网络编程、数据库访问、图形界面开发等。
这些类和方法的具体用法和功能都在Java API文档中有详细的描述。
二、Java API文档的重要性1. 方便开发者使用Java API文档包含了Java编程语言的各个类和方法的详细说明,开发者可以通过查阅文档了解每个类和方法的功能、参数和返回值。
这样可以帮助开发者更加快速地掌握和使用Java编程语言。
2. 规范开发流程通过查阅Java API文档,开发者可以了解到Java编程语言的规范用法和最佳实践,可以帮助开发者编写出规范且高效的代码。
3. 提高开发效率Java API文档中包含了大量的类和方法,开发者可以通过查阅文档快速找到需要使用的类和方法,避免了重复研发已有的功能,提高了开发效率。
三、Java API文档的使用方法1. 在线文档Oracle官方全球信息湾提供了Java API的在线文档,开发者可以在全球信息湾上找到并查阅各个版本的Java API文档。
通过在搜索栏中输入想要查找的类或方法,即可快速定位到文档中的相关内容。
2. 下载文档开发者也可以选择下载Java API文档到本地,这样可以在没有网络的情况下查阅文档。
文档的下载位置区域通常会在全球信息湾上提供,开发者可以根据自己的需求选择相应的文档版本进行下载。
四、Java API文档的内容组成Java API文档通常包括以下几个部分:1. 概览Java API文档的概览部分包含了对整个API的介绍,包括了Java的整体架构、各个模块的功能以及如何使用文档进行查找和导航的方法等。
2. 包Java API中的类和接口一般被组织成包,每个包下包含了一组相关的类和接口。
API (Applic ation Progra mming Interf ace) 应用编程接口JRE (Java Runtim e Enviro ment) Java 运行时环境JDK (Java Develo pment Kit) Java开发工具包SDK(Softwa re Develo pment Kit, 即软件开发工具包)JVM (Java Virtua l Machin e) Java虚拟机JNI (Java Native Interf ace) Java本地接口AWT (Abstra ct Window s Toolek it) 抽象窗口工具箱JNDI (Java Naming & Direct ory Interf ace) JAVA命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS (Java Messag e Servic e)JAVA消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.JTA (Java Transc ation API) JAVA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可.JAF (Java Action FrameW ork) JAVA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策略.RMI (Remote Method Interf ace) 远程方法调用CVS (Concur rentVersio ns System) 版本控制器SVN (Subver sion)版本控制器TC (Test Case) 测试用例,是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
常用API部分测试题1.String类中的getBytes()方法的作用是( C )A)将整数变成字符串B)将字符串变成字符数组C)将字符串变成字节数组D)获取字符串中字符的个数2.下列程序的输出结果是( A )class Demo {publicstaticvoid main(String[] args) {System.out.println("abcd".substring(1,3));}}A)bc 包头不包尾B) bC)bcdD)abcd3.对字符串”ababcdabcdefg”使用index Of(‘a’)和lastIndexOf(‘a’),的运行结果是( B )A)1,1B)0,6C)0,0D)1,6indexOf 从前开始获取,第一位是0lastIndexOf 从后开始获取,但索引还是从前面的第一位0开始4.下面程序的运行结果是什么( A )public static void main(String[] args){String s1 = “abc”;String s2 = “xyz”;show(s1,s2);System.out.println(s1+”-----”+s2);}static void show(String s1,String s2){s1 = s2+s1+”Q”;show方法中的s1= “xyzabcQ”但是main函数中s1没有变化.s2 = “W”+s1;}String字符串的特性,String应该算是一个特殊的引用类型吧,特殊在它的值不被改变A)abc-----xyzB)xyzabcQ-----xyzWabcC)xyzabcQ---- xyzabcQWabcD)xyzQ----Wabc5.以下哪个方法可以向StringBuffer对象的指定位置添加数据( B )A)add()B)insert() 注意是指定位置添加C)appendD)into()6.下面说法不正确的是( B )A)byte的包装类是ByteB)int的包装类是IntC)short的包装类是ShortD)long的包装类是Long7.关于null和“”说法正确的是( ABD )A)null是常量B)“”是字符串对象C)null可以调用方法D)“”可以调用方法8. 预定义字符 \w 代表什么( C )A) [A-Z]B) [a-z]C) [a-zA-Z_0-9]D) [0-9]9.关于String类的indexOf说法不正确的是( CD )A)返回指定字符在字符串中第一次出现的索引B)返回指定子字符串在字符串第一次出现的索引C)返回指定字符在字符串中最后一次出现的索引D)返回指定子字符串在此字符串最后一次出现的索引10.String类charAt()方法作用是 ( A )A)返回指定索引处的字符B)返回指定索引出的字符串C)返回指定字符的索引D)返回指定字符串的索引11.下面程序的运行结果是( B )Integer i5 = 100;Integer i6 = 100;System.out.println(i5 == i6);System.out.println( (i5 *2) == (i6 *2));System.out.println(i5.equals(i6));A)true,true,trueB)true,false,trueC)true,false,falseD)false,false,false-128到127是byte的取值范围,,如果在这一范围自动装箱不会创建新的对象,而是从常量池中获取,如果超过就创建对象12.下面程序的运行结果是( B )S tring s1 = new String(“abc”);String s2 = new String(“abc”);System.out.println(s1==s2);比较的是地址.因为是2个对象.所以false String s3 = “你好吗”;String s4 =”你”;String s5 =”好吗”;System.out.println(“你好吗”==(”你”+”好吗”))这个是true,因为java有优化机制A)true trueB)false trueC)true flaseD)false false13.下列程序的输出结果是( D )class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int i = sc.nextInt();System.out.println(i);}}从键盘输录入:a 10回车A) aB)10C) a 10D)抛出异常输入的有a字符,只能接收整数14.String类中split()方法描述正确的是( AC )A)切割字符串B)返回一个新的字符串C)返回一个新的字符串数组D)此方法没有返回值15.将十进制数100转成二进制数用哪个方法( A )A)toBinaryString()Integer对象的方法, 二进制那就得Binary了.但最后的返回值是String形式的.B)toHexString()C)intValue()D)toOctalString()16.StringBuffer字符串缓冲区的初始容量是多少个字符( D )A)10个B)12个C)14个D)16个这个是默认值17.向字符串缓冲区中追加字符串,使用的方法是( C )A)length()B)delete()C)append()看意思:附加,追加。
Java常用API的运用,效率及技巧1.Java面向对象基本概念2.System3.String, StringBuffer4.数值,字符,布尔对象与简单类型的操作5.Class, ClassLoader6.Java IO系统7.Java集合类8.ResourceBundle, Properties9.Exceptions10.JDBC类库11.常用设计模式--- 本文档旨在对我们常用的一些Java API做一些总结,目的是让我们能够正确有效的使用Java 的类库。
技巧也就是前人经验的一种总结。
1.Java面向对象基本概念Java基本上是面向对象的程序设计语言,除了一些简单类型(primitive)的变量以外,一切都是对象,程序是对象的组合,每个对象都有自己的空间,并且每个对象都有一种类型,同一类所有对象都能接受相同的消息。
下面只对Java中对象的结构作简单的说明: 类(class): class是定义类的关键字,类中包含类变量,方法,内部类,内部接口等。
由class可以生成类的实例,即一个个对象。
如果一个类的成员被定义成static的,则这个成员不专属于任何对象,而是属于这个类,所有的对象共享这个成员。
抽象类(abstract class): 抽象类不能直接生成一个实例,抽象类中必需有方法是abstract的,抽象类的意思就是它实现了一部分的方法,而定义为abstract的方法则需要在它的字类中去实现。
接口(interface): 接口可以理解为纯抽象的类,它的每个方法都是未实现的,它可以有成员变量,但必须是static的。
一个类如果从这个接口继承(implements)则它必须实现这个接口的所有方法。
继承类用关键字:extends,继承接口用关键字:implements。
一个类只能从一个类继承下来,但可以从多个接口继承(类似于C++的多重继承)。
字类可以覆盖父类的方法(method),但不能覆盖父类的成员变量(field)。
如果父类的方法为final或static的则不能被覆盖。
类的初始化顺序是,如果有父类,则先初始化父类的field,然后执行父类的构造函数,如果子类没有显式的去调父类的构造函数则缺省的会去调父类的无参数构造函数。
然后是子类的field 与构造函数的初始化。
public interface SuperInterface {public staitc String SOME_FLAG = “1”;public void someMethod();}public Class SuperClass {{ System.out.println(“init SuperClass field”);}public SuperClass() {System.out.println(“init SuperClass Constructor”); }public void runMethod() { System.out.println(“run SuperClass runMethod()”); } }public Class SubClass extends SuperClass implements SuperInterface {{ System.out.println(“init SubClass field”); }public SubClass() {System.out.println(“init SubClass Constructor”); }public void someMethod() {System.out.println(“run SubClass someMethod()”); }public void runMethod() {System.out.println(“run SubClass runMethod()”); } }有以下test代码:public class Test {public void main(String[] args) {SubClass sub = new SubClass();sub. runMethod();}}则会输出:init SuperClass fieldinit SuperClass Constructorinit SubClass fieldinit SubClass Constructorrun SubClass runMethod()以下章节所讲述到的常用的Java API就是一些Java自带的一些Class或Interface的用法。
2.SystemSystem类位于package ng下面,凡是此package下面的类我们可以直接引用无需先import 进来,因为JVM缺省就load了这下面的所有class。
System包含了一些我们常用的方法与成员变量。
System不能被实例化,所有的方法都可以直接引用。
主要作用大致有:输入输出流:(PrintStream) System.out (标准终端输出流),(PrintStream) System.err(标准错误输出流),(InputStream) System.in(标准输入流)。
我们还可以重定向这些流,比如将所有的System.out的输出全部重定向至一文件中去。
SystemsetOut(PrintStream) 标准输出重定向System.setErr(PrintStream) 标准错误输出重定向System.setIn(InputStream) 标准输入重定向取当前时间:System.currentTimeMillis() 所取到的时间是从1970/01/01以来1/1000秒计算的long型值。
这个值可以转换至Date或Timestamp值。
它一般还可以用来计算程序执行的时间。
例:long beginTime = System. currentTimeMillis();……System.out.println(“run time = ” + (System. currentTimeMillis() – beginTime));数组拷贝:System.arraycopy(Object src, int src_position, Object dst, int dst_position,int length)src:源数组。
src_position:源数组拷贝的起始位置。
dst:目标数组dst_position:拷贝至目标数组的起始位置length:拷贝元素的长度利用System.arraycopy进行数组的拷贝效率是最高的,一般情况下我们自己很少直接用到这个方法,但在集合类的内部中都大量使用了这个方法。
例:int[] array1 = {1, 2, 3, 4, 5};int[] array2 = {4, 5, 6, 7, 8};int array3 = new int[8];System.arraycopy(array1, 0, array3, 0, 5);System.arraycopy(array2, 2, array3, 5, 3);此时array3 = {1, 2, 3, 4, 5, 6, 7, 8}这比用for循环来进行赋值效率要高。
存取系统的Properties:System.getProperties():取得当前所有的Properties, Properties将在后面的集合一节进行详细的论述。
System.setProperties(Properties props):设置系统的Properties。
System.getProperty(String key):根据一个键值来取得一个Property。
System.setProperty(String key, String value):设置系统的一个Property。
JVM起动的时候将会有一些缺省的Properties值,例如:java.version Java运行环境版本java.home Java主目录 installation directoryjava.class.path Java 的class pathjava.ext.dirs Java的扩展目录路径file.separator文件分隔符("/" on UNIX)path.separator路径分隔符(":" on UNIX)line.separator行分隔符 ("\n" on UNIX)用户名user.home用户主目录user.dir用户当前工作目录更详细的信息请参照Java API。
另外在起动一个java程序的时候可以通过-D来设置系统的Property,比如java –Dejb.file=ejb_Test PrintTest在PrintTest里面就可以通过System.getProperty(“ejb.file”)来取得值ejb_Test。
其它System. loadLibrary(String libname):加载native的动态库。
可以用C写JNI的库,然后在java中通过native方法来调用。
System.setSecurityManager(SecurityManager s)System.getSecurityManager():设置与取得系统的security class。
3.String, StringBuffer3.1基本用法String可以说是我们最常用的一个类,熟练掌握它的一些基本用法是很有用的。
String是由一组字符组成的字符串,下标由0开始。
一旦有必要改变原来的内容,每个String 方法都有返回了一个新的String对象。
char charAt(int index) 返回指定位置的字符。
int compareTo(Object o)int compareTo(String anotherString)与另外一个对象进行比较。
int compareToIgnoreCase(String str) 与另一个String进行比较,不区分大小写String concat(String str) 连接两字符串,可以直接用+,因为Java给String覆盖了+ static String copyValueOf(char[] data)static String copyValueOf(char[] data, int offset, int count)将data数组转换至Stringboolean endsWith(String suffix) 测试此String是否以suffix结尾。