为了账号安全,请及时绑定邮箱和手机立即绑定

Java基础

标签:
Java

(一)对象数组
(1) 存储对象的一个数组

Student[] student = new Student[5] ;

Arrays:针对数组操作的工具类  (提供了一些针对数组排序和二分搜索法)
public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])
public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序
public static int binarySearch(int[] a,int key):二分搜索法: 在int类型的数组中查找key元素的索引
(2)注意:
在实际开发中,只要有引用类型,在对引用类型数据进行操作的时候,对引用类型的对象进行非空判断,防止空指针异常(NullPointerException)。

**(二)   Calendar类**(1)Calendar类:日历类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,
并为操作日历字段(例如获得下星期的日期)提供了一些方法

                 是一个抽象类,如何实例化?
  • public static Calendar getInstance() :通过一个静态功能来创建日历了对象
    *ate类:(重点)
    (2) alendar中的两个常用方法:

  • public abstract void add(int field,int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量 (这个方法常用)

  • public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
    (三)System类
    System 类包含一些有用的类字段和方法。它不能被实例化。

    常用的方法:
    public static void gc()运行垃圾回收器。
    public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码;  一般情况,需要终止
    Jvm,那么参数0
    public static long currentTimeMillis()返回以毫秒为单位的当前时间

     public static void arraycopy(Object src,int srcPos, Object dest,int destPos, int length)

    从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
    src:原数组
    dest:目标数组
    srcPos :从原数组的哪个位置开始
    destPos:到目标数组的哪个位置结束
    length:长度
    (四)Date类
    (1)java.util.Date:
    类 Date 表示特定的瞬间,精确到毫秒

    (2) 构造方法:

  • public Date()表示分配它的时间(精确到毫秒)。

  • public Date(long date):创建一个日期对象,指定毫秒值       (需要将long 时间毫秒值转换成Date对象)


  • public void setTime(long time):设置毫秒值

  • public long getTime()
    将Date类型的数据转换为long的毫秒值
    重点:Date的日期格式和日期的文本格式:String类型 之间进行转换

  • (3)Date类型与String类型转换
    Date---->String(格式化)

                 String-->Date(解析)

    中间的转换:使用中一个中间类:DateFormat,并且DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:
    SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

    SimpelDateFormat的构造方法:

  • public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern(模式:规则)

  • SimpleDateFormat sdf = new SimpleDateFormat("xxx年xx月xx日") ;
    日期和时间模式


  • 年:          yyyy

  • 月:          MM

  • 日:          dd


  • 时:          hh

  • 分:          mm

  • 秒:          ss

  • 实际开发中:牵扯时间的东西,经常Date--String  String--Date

    (五)Math类
    (1)Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。  
    (2)常用的方法:

  • public static int abs(int a):绝对值

  • public static double ceil(double a):向上取整

  • public static double floor(double a):向下取整

  • public static int max(int a,int b):求最大值

  • public static int min(int a,int b):求最小值

  • public static double pow(double a,double b):a的b次幂

  • public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

  • public static int round(float a):四射五入

  • public static double sqrt(double a):一个数的正平方根

  •                                  JDK5的特性:静态导入(导入方法的级别)**(六)Random类**    (1)     Random:是一个可以获取随机数的类

    (2)构造方法
    public Random():无参构造方法
    public Random(long seed) :指定long类型的数据进行构造随机数类对象

  • *public int nextInt():获取随机数,它的范围是在int类型范围之内

  • *public int nextInt(int n):获取随机数,它的范围是在[0,n)之间
    (七)正则表达式
    (1)正则表达式的语法:
    字符

    x       --------------------->  x字符
    \  ---------------------   >   反斜线字符
    \t          --------------------->制表符
    \n      --------------------->  换行符
    \r          --------------------->  回车符

字符类:
[abc]   --------------------->      a、b 或 c(简单类)
[^abc]      --------------------->  任何字符,除了 a、b 或 c(否定)
[a-zA-Z]        --------------------->a 到 z 或 A 到 Z,两头的字母包括在内(范围)

预定义字符类:
 .        --------------------->  任何字符        如果本身就是.     .      qq.com  写正则表达式(\.)
\d                  --------------------->数字:[0-9]                      写正则表达式 :\d
\w              --------------------->  单词字符:[a-zA-Z_0-9]:字母大小写,数字字符                        \w

边界匹配器:
^                   --------------------->行的开头
$               --------------------->   行的结尾
\b                  --------------------->单词边界 尾 (helloword?haha:world)

Greedy 数量词(重点)
X?              --------------------->   X,一次或一次也没有
X*              --------------------->  X,零次或多次
X+              --------------------->  X,一次或多次
X{n}            --------------------->  X字符恰好出现n次
X{n,}           --------------------->  X字符至少出现n次
X{n,m}          --------------------->  X字符至少出现n次,但不超过m次
例:
import java.util.Scanner;

自己校验:手机号码
定义规则:
136....
13689257284
13688886666
....

public class RegexDemo3 {

public static void main(String[] args) {    //创建键盘录入对象    Scanner sc = new Scanner(System.in) ;    //接收数据    System.out.println("请输入一个手机号码:");    String phone = sc.nextLine() ;    //定义正则规则    String regex = "1[36]\\d{9}" ;    boolean flag = phone.matches(regex) ;    System.out.println(flag);}

}
(2)方法:

  • public String[] split(String regex) :字符串的分割功能

        按照指定的格式进行分割,分割后返回的是一个字符串数组
  • public String replaceAll(String regex,String replacement)
    使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
    (八)集合
    (1)集合的由来?
    学生的面向对象语言,面向对象语言对事物的描述是通过对象体现的,那么需求需要来存储多个对象.
    要存储多个对象,不能使用基本类型的变量,需要使用容器类型的变量? 学习过哪些容器变量?
    数组 ,字符串缓冲区(StringBuffer)
    对于字符串缓冲区来说,在内存中始终存储的是字符串,不能满足要求;数组呢,数组的长度是固定的,不符合长度编号的要求,所有Java提供了一个
    (2)Collection 集合;

    集合:Collection:子接口有两个,两个子接口分别对应多个子实现类,多个集合数据结构不同,但是他们有共性内容,将共性内容
    抽取出来,就可以集合继承体系图!

    数据结构:数据的存储方式

    Collection:
    Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
    JDK 不提供此接口的任何直接 实现:它提供更具体的子接口,更具体的实现类
    (3) 基本功能:
    添加功能:
    boolean add(Object e)
    删除功能:
    void clear() :删除集合中所有元素(暴力删除)
    boolean remove(Object o):删除集合中的指定元素
    判断功能:
    boolean contains(Object o):集合中是否包含指定的元素
    获取功能:
    int size() :获取集合中的元素数

    转换功能:
    Object[] toArray() :将集合转换成数组
    (4)Colleciton的集合的高级功能:

    集合的专有遍历方式:迭代器遍历

        2)Iterator :接口中有以下的方法:

    逆向迭代(遍历),单独使用没意义,前提,要先正向遍历
    4)两种遍历方式
    存储自定义对象并遍历,两种方式

    我有一个集合,如下List,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现
    假设:List集合 的元素:"hello","world","java"

    public static void main(String[] args) {

    //创建一个集合对象List list = new ArrayList() ;//添加元素list.add("hello") ;list.add("world") ;list.add("java") ;//方式1:使用迭代器遍历,迭代器添加元素解决并发修改异常//Iterator接口没有添加功能呢//ListIterator:列表迭代器中有add(object e):方法

    /  ListIterator it = list.listIterator() ;
    while(it.hasNext()) {
    String s = (String)it.next() ;
    if("world".equals(s)) {
    //迭代器添加
    it.add("javaee"); //指定元素后面插入元素
    }
    }
    /

    //方式2:使用集合遍历,使用集合添加元素(普通for循环)for(int x =0 ;x < list.size() ; x ++) {    String s = (String)list.get(x) ;    //判断    if("world".equals(s)) {        list.add("javaee") ;    }}System.out.println("list:"+list);/*int a = 10 ;System.out.println(a/0);*/

    }
    }

    • @author Administrator



    • 按照正常的思路:完成了需求,发现出现异常:

    • java.util.ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。


    • 产生的原因:按照正常的需求,给集合添加元素,遍历,遍历同时,判断集合中是否有需要的元素,有就添加新元素,

    • 遍历的时候,使用迭代器遍历,但是添加元素,使用集合添加元素.

    • 集合添加了一个新的元素,迭代器不知道...


    • 使用迭代器遍历元素,不能使用集合添加元素!


    • 解决方案:

    • 方式1:要么使用迭代器遍历,使用迭代器添加元素!

    • 方式2:要么使用集合遍历,使用集合添加元素!

    • 并发

    • 并行

    • */
      public class ListTest {

    • 方式1:Iterator iterator();

    • 方式2:size()和get()方法相结合
      5) ist集合有三个子实现类:

      ArrayList        底层数据结构式数组结构,查询块,增删慢        从内存角度考虑:线程不安全的,不同步的,执行效率高        多线程:synchronized :同步的意思     解决线程安全问题                sychronized(锁对象){   同步代码                         共享数据;                   }        解决线程安全问题,通过同步可以解决,但是效率低了...LinkedList        :底层数据结构式链表结构,查询慢,增删块        从内存角度考虑:线程不安全,不同步,执行效率高Vector:        这是一个线程安全的类,        底层数据结构是数组:查询快,增删慢        线程安全的,同步,执行效率低!    (7)例    需求:
    • boolean hasNext() :如果有元素可以迭代,那么返回true,否则返回false

    • Object next()返回迭代的下一个元素。
      存储String类型的元素
      3)      注意:
      it.next(),只使用一次即可,使用多次,会出现问题(it.next(),每次使用的时候都是返回一个对象)
      遍历的时候使用的while循环,可不可以使用for循环呢?
      可以,不过很少用。
      (6)List集合
      1)interface extends Collection{
      就可以使用Collection集合的功能
      }

                  Collection有两个子接口:List       Set        2)List        List集合的特有功能:

      添加功能
      void add(int index,Object element):在指定位置处添加指定元素
      获取功能
      Object get(int index)返回列表中指定位置的元素。
      ListIterator listIterator():列表迭代器
      删除功能:
      Object remove(int index):删除指定位置处的元素
      修改功能
      Object set(int index, Object element):用指定element元素替换掉指定位置处的元素
      3)方法
      ListIterator listIterator():列表迭代器 (List集合的专有迭代遍历:列表迭代器)
      ListIterator接口中:

    • boolean hasNext()  :判断是否有下一个可以迭代的元素(正向遍历)

    • Object next():获取下一个元素

    • boolean hasPrevious():判断是否有上一个可以迭代 元素(逆向遍历)

    • Object previous():返回上一个元素

    • boolean addAll(Collection c)  :添加一个集合中的所有元素

    • boolean removeAll(Collection c):删除的高级功能(思考:删除一个算是删除还是删除所有算是删除?)
      删除一个算删除

    • boolean containsAll(Collection c):包含所有元素算是包含,还是包含一个算是包含

    • boolean retainAll(Collection c) :交集功能:   A集合对B集合取交集元素  :思考
      boolean 表达的是什么意思,交集的元素是去A集合还是去B集合中
      A集合对B集合取交集,交集的元素要去A集合中,boolean返回值表达的A集合的元素是否发生变化,如果发生变化,则返回true,否则,返回false
      (5)迭代器
      1)  Iterator iterator() :集合的迭代器方法(获取集合的迭代器)

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消