首页 > 编程语言 >小新学Java9

小新学Java9

时间:2022-11-20 16:12:23浏览次数:48  
标签:返回 int 字符串 集合 新学 泛型 Java9 public

一、Object类

1.1Object类的toString方法

toStringpublic String toString()  

  返回该对象的字符串表示。通常,toString方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。  

  Object 类的toString方法返回一个字符串,该字符率由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法的返回一个字符串,它的值等于:                      getClass(. getName()+ '@’+ Integer.toHexString(hashCode())  

  返回:  该对象的字符串表示形式

 1.2Object类的equals方法

public boolean equals(Object obj)
  指示其他某个对象是否与此对象“相等”。
equals方法在非空对象引用上实现相等关系:
  自反性:对于任何非空引用值x, x.equals(x)都应返回true。
  对称性:对于任何非空引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true。
  传递性:对于任何非空引用值x、y 和z,如果x.euals(y)返回true,并且y.equals(z)返回true,那么 x.equals(z)应返回true。
  一致性:对于任何非空引用值x和y,多次调用x. euals (y)始终返回true 或始终返回faise,前提是对象上equals 比较中所用的信息没有被修改。

  对子任何非空引用值x, x.equals(null)都应返回false.
Object类的 equals方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true(x==y 具有值true)。

注意:当此方法被重写时,通常有必要重写hashCode方法,以维护 hashCode方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
参数:
  obj ------要与之比较的引用对象。返回:
    如果此对象与obj参数相同,则返回true;否则返回false。

另请参见:hashCode,Hashtable

2.Objects类

总结:

 二、日期时间类

java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象

1.Date类

1.1构造方法

①Date类空参数构造方法使用当前日期和时间来初始化对象。

Date()

 ②Date类带参数构造方法(接收一个参数,该参数是从 1970 年 1 月 1 日起的毫秒数。)

Date(long millisec)

1.2成员方法

long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

2.DateFormat类

java.text.DateFormat:是日期/时间格式化子类的抽象类

作用:
  格式化〈也就是日期->文本)、解析(文本->日期)

成员方法:
  String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串  

  Date parse(String source)把符合模式的字符串,解析为Date日期

DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类
java.text.SimpleDateFormat extends DateFormat
构造方法:
  SimpleDateFormat (string pattern)用给定的模式和默认语言环境的日期格式符号构造SimpLeDateFormat 。

  参数:
    string pattern :传递指定的模式

模式:  区分大小写的
      y   年
      M  月  

      d  日

      H  时

      m  分

      s  秒

写对应的模式,会把模式替换为对应的日期和时间

  "yyyy-MM-dd HH:mm:ss"

  "yyyy年MM月dd日 HH时mm分ss秒"

注意:

  模式中的字母不能更改,连接模式的符号可以改变

 3.Calendar类

java.util.Calendar类:日历类
Calendar类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR、MORNTH、DAY_OF_MONTH、HOUR)
Calendar类无法直接创建对象使用,里面有一个静态方法getInstance(),该方法返回了Calendar类的子类对象
static Calendar getInstance()使用默认时区和语言环境获得一个日历

三、System类

package demo05;

import java.lang.reflect.Array;
import java.util.Arrays;

/*
java.util.lang包提供了大量静态方法,可以获取与系统相关的信息或系统级操作,常用的方法有:
currentTimeMillis()
返回以毫秒为单位的当前时间

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
*/
public class Demo01System {
public static void main(String[] args) {
// method1();
method2();
}

public static void method1(){
// 练习1:计算打印1~9999需要花费多少毫秒
long d1 = System.currentTimeMillis();
System.out.println(d1);

for (int i = 1; i < 10000; i++) {
System.out.println(i);
}

long d2 = System.currentTimeMillis();

long result = d2 - d1;
System.out.println("程序共耗时:" + result);
}

public static void method2(){
/*练习2:
将src数组中前3个元素,复制到dest数组的前3个位置上
复制元素前∶src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]
复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]
*/
// 定义源数组
int[] src = {1,2,3,4,5};
// 定义目标数组
int[] dest = {6,7,8,9,10};

System.out.println("复制前:" + Arrays.toString(dest));

// 将src数组中前3个元素,复制到dest数组的前3个位置上
System.arraycopy(src, 0, dest, 0, 3);
System.out.println("复制后:" + Arrays.toString(dest));
}
}

 四、StringBuilder类

【字符串缓冲区,可以提高字符串的操作效率(看出一个长度可以变化的字符串)】
1、构造方法
StringBuilder()
构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。

StringBuilder(String str)
构造一个字符串生成器,并初始化为指定的字符串内容。
2、成员方法
StringBuilder常用成员方法:
①public StringBuilder append(...):添加任意类型的数据的字符串形式,并返回当前对象自身。
参数:可以是任意的数据类型

②reverse方法:将缓冲区字符串内容进行反转

StringBuilder和String可以相互转换:
String->StringBuilder:可以使用StringBuilder的构造方法
StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。
StringBuilder->String:可以使用StringBuilder中的toString方法
public String toString():将当前StringBuilder对象转换为String对象

③toString()
返回此序列中数据的字符串表示形式。

五、包装类

1.概念:

包装类:基本数据类型的数据使用起来非常方便,但是没有对应的方法来操作这些数据,所以我们可以使用一个类,把基本类型的数据包装起来,这个类叫做包装类。

在包装类中可以定义一些方法,用来操作基本类型的数据。

2、装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)

构造方法:

  Integer(int value)构造一个新分配的 Integer对象,它表示指定的 int值。

  Integer(String s)构造一个新分配的Integer对象,它表示String参数所指示的int值。

   传递的字符串,必须是基本类型的字符串,否则会抛出异常。如:“100”正确,“a”抛异常

静态方法:

  static Integer value0f(int i)返回一个表示指定的 int值的 Integer实例。

  static Integer value0f (String s)返回保存指定的string 的值的Integer对象。

拆箱:在包装类中取出基本类型的数据(包装类->基本类型的数据)

成员方法:

  int intvalue()以int类型返回该Integer的值。

3、自动拆箱与自动装箱:基本类型的数据和包装类直接可以自动转换

 

4、基本类型与字符串之间的转换

基本类型-->字符串

1)基本类型数据的值+""最简单的方式(工作中常用)

2)使用包装类中的静态方法

  static string tostring(int i)返回一个表示指定整数的 string对象。

3)使用string类中的静态方法

  static string valueof(int i)返回int参数的字符串表示形式。

字符串-->基本类型

使用包装类的静态方法parseXX(""字符串")

Integer类:static int parseInt(string s)

Double类:static double parseDouble(String s)

六、集合框架

集合框架被设计成要满足以下几个目标。

  • 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

  • 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

  • 对一个集合的扩展和适应必须是简单的。

为此,整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedListHashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。

 

 

 

 1.

 2.

 

java.util.Collection接口
所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法
任意的单列集合都可以使用Collection接口中的方法
共性的方法:
public boolean add(E e):把给定的对象添加到当前集合中。
public void clear():清空集合中所有的元素。
public boolean remove(E e)∶把给定的对象在当前集合中删除。
public boolean contains(E e):判断当前集合中是否包含给定的对象。
public boolean isEmpty():判断当前集合是否为空。
public int size():返回集合中元素的个数。
public object[ ] toArray( ):把集合中的元素,存储到数组中。

七、Iterator迭代器(Iterator接口)

1、迭代∶即Collection集合元素的通用获取方式。

在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。

java.util.Iterator接口:迭代器(对集合进行遍历)
有两个常用的方法
①boolean hasNext()如果仍有元素可以迭代,则返回true。
判断集合中还有没有下一个元素,有就返回true,没有就返回false
②E next()返回迭代的下一个元素。
取出集合中的下一个元素
Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊
collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象
Iterator<E> iterator()返回在此collection 的元素上进行迭代的迭代器。

迭代器的使用步骤(重点)
1)使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
2)使用Iterator接口中的hasNext方法判断还有没有下一个元素
3)使用Iterator接口中的next方法取出集合中的下一个元素

2、增强for循环

增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写
是JDK1.5之后出现的新特性
collection<E>extends Iterable<E>:所有的单列集合都可以使用增强for
public interface Iterable<T>实现这个接口允许对象成为“foreach”语句的目标。

增强for循环:用来遍历集合和数组

格式:
for(集合/数组的数据类型变量名:集合名/数组名){
sout(变量名);
}

tips:新for循环必须有被遍历的目标。目标只能说Collection或者是数组。新式for循环仅仅作为遍历操作出现。

八、泛型

1、泛型的概念

注意:泛型没有继承的概念

2.泛型的好处

 ①

 创建集合对象,不使用泛型:
    好处:集合不使用泛型,认的类型就是object类型,可以存储任意类型的数据
弊端:不安全,会引发异常
创建集合对象,使用泛型:
好处:
1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型
2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错)
弊端:泛型是什么类型,只能存储什么类型的数据

定义一个含有泛型的类,模拟ArrayList集合
泛型是一个未知的数据类型,当我们不确定什么数据类型的时候,可以使用泛型
泛型可以接收任意的数据类型,可以使用Integer,string, student. . .
创建对象的时候确定泛型的数据类型

定义含有泛型的方法:泛型定义在方法的修饰符和返回值类型之间格式:

修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型)) {
方法体;
}
含有泛型的方法,在调用方法的时候确定泛型的数据类型传递什么类型的参数,泛型就是什么类型

④定义含有泛型的接口:

含有泛型的接口,第一种使用方式:定义接口的实现类,实现接口,指定接口的泛型
public interface Iterator<E> {
E next();
}
如:
Scanner类实现了Iterator接口,并指定接口的泛型为String,所以重写的next方法泛型默认就是String
public final class Scanner implements Iterator<String>{
public String next(){}
}
含有泛型的接口,第二种使用方式:接口使用什么类型,实现类就使用什么泛型,类跟着接口走
就相当于定义了一个含有泛型的类,创建对象的时候确定泛型的类型。
public interface List<E>{
boolean add(E e);
E get(int index );
}
如:
public class ArrayList<E> implements list<E>{
public boolean add(E e){}
public E get(int index){}
}

3、泛型的通配符

泛型的通配符:
?:代表任意的数据类型
使用方法:
不能创建对象使用
只能作为方法的参数使用

4、泛型的上下限限定

泛型的上限限定:? extends E 代表使用的泛型只能是E类型的子类/本身
泛型的下限限定:? super E 代表使用的泛型只能是E类型的父类/本身

九、斗地主案例

 

标签:返回,int,字符串,集合,新学,泛型,Java9,public
From: https://www.cnblogs.com/shuxin1125/p/16890499.html

相关文章

  • 今日新学
    一,指针的用法#include<stdio.h>intmain(){ intc,d,*a,*b,*t; scanf("%d%d",&c,&d); a=&c; b=&d;t=*a; *a=*b; *b=t; printf("%d%d",*a,*b);}指针是指定一......
  • GIT重新学习
    名词解释HEAD表示当前版本HEAD^表示上一个版本HEAD^^上上一个版本HEAD~100上100个版本gitreset--hardHEAD^丢弃当前版本返回上一个版本--soft是将修改放回......
  • 小新学Java7-【接口、多态】
    一、接口1.接口概述接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK7及......
  • 小新学Java6-【继承、super、this、抽象类】
    一、继承1.概述:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。其中,多个类可以称为子类,单独那一......
  • 小新学Java5-【String类、static关键字、Arrays类、 Math类】
    一、String类1.String类概述 创建字符串的3+1种方式:三种构造方法:①publicString():创建一个空白字符串,不含任何内容。②publicString(char[]array):根据字符数组的......
  • 小新学Java2
    一、方法1.方法有返回值和无返回值的区别 2.使用方法时的注意事项①方法应该定义在类中,但是不能在方法中再定义方法。不能嵌套。②方法定义的前后顺序无无所谓。③......
  • 新学期你立一个什么样的FLAG?
    目录​​一、自我介绍​​​​二、新学期目标​​​​三、未来的发展规划​​​​依旧是那句话:​​        一年转瞬即逝,到现在已经即是写博客一周年,又是新的学期。......
  • 今天重新学习java基础的时候遇到了一个好玩的问题。换了环境变量jdk还是显示原来版本
    今天学习ES,需要用到更高版本的jdk(我以前用的是1.8),所以要更改以前的jdk设置,总体步骤如下:1.下载jdk-11,解压2.打开环境变量配置,把以前配置的JAVA_HOME的改为新jdk-11的路径......
  • 2022暑假集训新学知识点总结
    新学知识点图论树1、树链剖分(求lca,dfs序等)2、倍增lca流1、Dinic最大流2、匈牙利二分图最大匹配其他1、spfa最短路判负环字符串1、后缀自动机SAM2、回文自动......