java学习笔记6(上)

1.String和StringBuffer之间如何转换:

//String---->StringBuffer
//方式1:StringBuffer的有参构造方法
public StringBuffer(String str)
//方式2:StringBuffer的无参构造方法+append(追加){}
public StringBuffer()
public StringBuffer append(String str)   
    
//StringBuffer----->String
  //方式1:String类的有参构造方法
public String(StringBuffer buffer)
//方式2:StringBuffer的功能:toString
public String toString()   

2.int和String之间进行互相转换?

//int--->String
int i = 100 ;
String s = "" ;
String reuslt = s +i ; //"100"
//Integer(int i) 
Integer ii = new Integer(i) ;
//成员方法public String toString() 
String result2 = ii.toString() ;
//方式3:Integer的静态功能public static String toString(int i)
​
//String---->int
//String---long
//String----double
//Integer的paseInt()

3.Character类

是基本的数据类型char类型的包装类类型,包含char的值.
构造方法:Character(char value)参数里面也可以为int--char:将一个字符内容构造成包装类类型.
成员方法:  判断功能:
 public static boolean isDigit(char ch):判断当前ch字符是否为数字
 public static boolean isLowerCase(char ch):判断当前ch字符是否为小写字母字符
 public static boolean isUpperCase(char ch)确定指定的字符是否为大写字符

4.date类

表示 日期格式:精确到瞬秒.
构造方法: public Date():无参构造方法,获取当前系统时间的日期格式  默认使用当前系统时间
public Date(long date):将long类型-构造成Date对象:long指定时间毫秒值(与1970年1月1日)
成员方法:
public long getTime():将Date日期格式---转换成long类型返回自1970年1月1日以来的Date毫秒数.
注意:咋开发中:前后端交互:前端提交的日期数据----String类型.
数据库中储存的的时间:Date格式:
    String日期文本格式如何和Date格式之间相互转换:
    DateFormat是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间.是一个抽象类.抽象类不能实例化,他提供了更具体的子类SimpleDateFormat进行操作.
    java.util.Date对象---SimpleDateFormat-----
    String日期文本格式.
    格式化格式:
    public final Stringformat(Date date)
     yyyy:表示年    2009
     MM:月           07/11
     dd:月中的天     01
     HH:小时数      14  (24小时制)
     mm:分钟数      02
     ss:描述        03
     构造方法:publicSimpleDateFormat(String patten):参数为描述日期和时间格式的一种模式;
     将String--------SimpleDateFormat------Date 解析

5.Calendar抽象类

表示的特定一组时间:诸如YEAR,MONTH,DAY-OF_MONTH等
如何实例化:
  如果一个类定义为抽象类,那么目的是不让这个类实例化.
   它肯定会有静态功能,返回值它本省.
静态功能:
   public static Calendar getInstance()
成员变量---常量
   public static final int YEAR :年
   public static final int MONTH:月:角标是从0开始计算, 计算出来+1 public        static final int DATE:月中的日期 和DAY_OF_MONTH同义词
成员方法:
   public int get(intfield):获取当前的日历字段你
   public abstract voidadd(int field,intamount):设置时间偏移量,针对当前日历字段,减去或者添加指定amount.
   举例:键盘录入一个年份,判断这个年份的二月份有多少天?

   package com.jhq5.test1.work02;
​
import java.util.Calendar;
import java.util.Scanner;
​
public class CalendarTest {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //提示录入月查询的年份的2月;
        System.out.println("请输入你要查询的年份的2月:");
        int year=sc.nextInt();
        //创建日历对象
        Calendar c = Calendar.getInstance();
        //设置当前日历对象
        c.set(year,2,1);
        //设置偏移量
        c.add(c.DATE,-1);
        System.out.println(year+"年的2月份有"+c.get(Calendar.DATE)+"天");
    }
}
2.当前日历为2021-2-1,计算5年后的10天前?
package com.jhq5.test1.work3;
​
import java.util.Calendar;
​
public class CalendarTest {
    public static void main(String[] args) {
        //创建日历对象;
        Calendar c = Calendar.getInstance();
        //获取当前系统的日期;
        c.set(2021,01,01) ;
        //5年前
        c.add(Calendar.YEAR,5);
       int year = c.get(Calendar.YEAR);
        int month=c.get(Calendar.MONTH);
        //10天前
        c.add(Calendar.DATE,-10);
       int day=c.get(Calendar.DATE);
        System.out.println("5年后的10天前是"+year+"年"+month+"月"+day+" 日");
    }
}

6.System类

不能实例化,里面提供一些标准的输入流,
静态字段(常量)
 public static final  InputSteam in ;
 public static final  PrintStream out ;
静态功能:
 public static void gc() //手动开启垃圾回收器
 public static void exit(int status)//:参数为0,正常终止JVM
 public static void arraycopy(Object src,int srcPos,Object dest,int          destPos, int length)//复制数组
 public static long currentTimeMillis()//:计算当前系统时间毫秒值
System的gc()方法的作用:
  调用gc()方法,其实质调用Object类的finalize()方法,需要被子类覆盖,将没有更多引用的对象进行垃圾回收,以释放
当前所占用的内存空间!

7.面试题:

final,finalize()的区别:
   前者关键字,后者方法.
   final,状态修饰符,修饰类,不能被继承;修饰方法,不能重写;修饰变量,是一个常量.
   finalize(),当垃圾回收器开启的时候,会调用子类的finalize()方法,来回收没有更多引用      的对象.
    一般情况:不需要手动开启回收器,自动回收.

8.Random类

是伪随机数生成器
构造方法:
  Random():创建随机数生成器,通过它调用功能获取的随机是不同的   (使用无参构造居多)
  Random(long seed):创建随机数生成器,通过它调用功能,产生随机数值相同的
 成员方法:
      public int nextInt():获取随机数int类型范围
      public int nextInt(int n):获取0-n之间随机数,不包括n  (重点)
​

9.Math类

数学的运算工具类;(功能都是静态)
 public static double abs(double/int a):求绝对值
 public static double ceil(double a):向上取整
 public static double floor(double a):向下取整
 public static double max(double a,double b):获取最大值
 public static double min(double a,double b):获取最小值
 public static double random():[0,1) :获取0,1随机数,不包含1
 public static long round(double a):四舍五入
 public static double sqrt(double a):开正方根
 public static double pow(double a,double b):a的b次幂

10.BigDecimal类

对小数进行精确计算的
  public BigDecimal(String val) :将数字字符构造成BigDecimal对象
 功能
    public BigDecimal add(BigDecimal augend)求和
    public BigDecimal subtract(BigDecimal subtrahend)相减
    public BigDecimal multiply(BigDecimal multiplicand):乘
    public BigDecimal divide(BigDecimal divisor)除
除的时候,还可以保留小数的精确位数
    public BigDecimal divide(BigDecimal divisor,int scale, RoundingMode    roundingMode)
   参数1:指定的除数
   参数2:保留的有效位数
   参数3:指定舍入模式: ROUND_HALF_UP 四舍五入

11.选择排序

思想:使用0角标对应的元素依次和后面角标对应的元素进行比较,小的往前放,第一次比较完毕,最小值出现在最小索引处,依次比较,比较的次数:数组长度-1;
代码:
public class ArrayDemo {
​
    public static void main(String[] args) {
        //给定一个数组
        int[] arr = {24,68,87,57,13} ;
​
        System.out.println("排序前:");
        //自己的功能
        printArray(arr) ;
         System.out.println("排序后:");
         selectSort(arr);
          printArray(arr) ;
     private static void selectSort(int[] arr) {
        for (int x = 0; x < arr.length - 1; x++) {//比较次数
            for (int y = x + 1; y < arr.length; y++) {//遍历后面的元素
                //判断
                if (arr[y] < arr[x]) {
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
    }
​
    public static void printArray(int[] arr){
        System.out.print("[") ;
        for(int x = 0 ; x < arr.length ; x++){
            if(x == arr.length-1){
                System.out.println(arr[x] +"]") ;
            }else{
                System.out.print(arr[x]+", ");
            }
        }
    }
}
 

12.String和StringBuffer的区别:

StringBuffer:可变的字符序列,线程安全的类
    StringBuffer:字符串缓冲区中存储的字符序列,最终使用的时候---->String
    1)String(StringBuffer buffer)
    2)String toString() ;
String:不支持可变,特点:常量,一旦被赋值,其值不能被更改
    StringBuffer(String str)
    StringBuffer()+append(String str)

13.集合和数组的区别:

长度的区别:
    集合:长度是可变的
    数组:长度是固定的
存储数据类型的区别:
    集合:只能存储引用数据类型
    数组:既可以存储基本数据类型,也可以存储引用数据类型
存储元素的区别:
    集合:可以存储任何引用类型的元素,没有泛型
    数组:存储的这些类型(基本/引用),同一种类型的元素

14.集合去遍历字符串数据,toArray()方式的操作步骤:

//创建集合对象
Collection c = new ArrayList() ;
//给集合中添加字符串数据
c.add("hello") ;
c.add("world") ;
c.add("JavaEE") ;
c.add("Android") ;
//将集合转换成对象数组Object[]
Object[] objs = c.toArray() ;//相当于每一个Object obj = new String() ;
//遍历对象数组
for(int x = 0 ; x < objs.length; x ++){
    //直接输出objs[x] 
    //获取字符串数据的同时,获取字符串长度 length()
    String s = (String)objs[x] ;
    System.out.println(s +"---"+s.length()) ;
}

15.Collection集合的高级功能

  boolean addAll(Collection c):添加一个集合中的所有元素
  boolean containsAll(Collection c):包含一个集合的所有元素 (思考:包含一个算包含,还是所有元素)
  boolean removeAll(Collection c):删除一个算删除还是删除所有算删除?    结论:删除一个集合中包含另一个集合中的某个元素,就算删除,返回true.
  面试题:
  boolean retainAll(Collection c): 求集合中的交集元素,boolean的表达式意思是什么?
   A集合对B集合求交集,boolean 什么情况true/什么情况下false
   将交集的元素保存A集合中,boolean表达的意思:将保存在A集合中的元素是否和之前的元素发生变化
   如果前后发生变化,则返回true;没有变化,则返回false!

16.Iterator:接口

Iterator<E> iterator():迭代器:集合专有遍历方式
 Iterator:接口
 boolean hasNext() 判断是否有下一个可以迭代的元素 (判断功能)
 Object next():获取下一个可以迭代的元素          (获取功能)

17.增强for循环:

 作用:替代迭代器的Iterator,简化书写方式
  格式:   
  for(泛型数据类型 变量名 : 集合对象名称){  //增强for循环 遍历数组非常少,主要用在集合中
           输出变量名;
       }
     前提条件:集合对象不能为null,否则就出现空指针异常
     目的:替代迭代器!

18.List 集合

是Collection的子接口,有Collection大部分功能,也有自己的功能.
特点:
  有序:存储和取出一致;
  元素可以重复;
特有的功能:
  void add(int index, Object element):在指定位置处添加一个新的元素
  Object remove(int index):删除指定位置处的元素
  E set(int index, Object element):修改指定位置处的元素内容
  Object get(int index):获取指定位置处的元素
  ListIterator<E> listIterator():列表迭代器
  举例:
     使用List存储多个字符串,有重复的元素,如何去重!
     (1)新建集合思想:
    
 public class ListTest2 {
​
    public static void main(String[] args) {
​
        //创建List集合对象
        List<String> list = new ArrayList<>() ;
​
        list.add("hello") ;
        list.add("world") ;
        list.add("javaee") ;
        list.add("hello") ;
        list.add("world") ;
        list.add("world") ;
        list.add("hello") ;
        list.add("javaee") ;
        list.add("android") ;
        list.add("android") ;
        list.add("php") ;
        list.add("php") ;
        //创建一个新的集合
        List<String> newList = new ArrayList<>() ;
        //遍历旧集合获取每一个元素:增强for
        for(String s:list){
            //在新集合中判断是否包含这个元素,如果不包含,才给新集合中添加
            if(!newList.contains(s)){
                newList.add(s) ;
            }
        }
        //遍历新集合
        for(String s:newList){
            System.out.println(s);
        }
    }
​
}
     (2)利用选择排序思想:
   
  public class ListTest3 {
    public static void main(String[] args) {
        //创建List集合对象
        List<String> list = new ArrayList<>() ;
​
        list.add("hello") ;
        list.add("world") ;
        list.add("javaee") ;
        list.add("hello") ;
        list.add("world") ;
        list.add("world") ;
        list.add("hello") ;
        list.add("javaee") ;
        list.add("android") ;
        list.add("android") ;
        list.add("php") ;
        list.add("php") ;
        //选择排序的核心代码
        for(int x = 0 ; x < list.size()-1; x++){
            for(int y = x+1 ; y < list.size() ; y ++){
                //业务思想:如果前面的元素和后面元素一致,将后面的重复元素删除掉
                if(list.get(y).equals(list.get(x))){
                    //将后面的元素删除
                    list.remove(y) ;
                    y -- ;
                }
            }
        }
        //遍历当前这个集合
        for(String s :list){
            System.out.println(s);
        }
    }
}

19.ListIterator接口

 ListIterator<E> listIterator():列表迭代器
  ListIterator接口:
           ArrayList内部类ListItr,(父类:ArrayList的内部类Itr)实现它里面的方法
           boolean hasNext() :判断当前列表中是否下一个可以遍历的元素
           Object next():获取下一个元素
           boolean hasPrevious():判断当前列表中是否有时上一个可以遍历的元素
           Object previous():获取上一个元素
           前提条件:必须有正向遍历,才能使用反写遍历;

20.泛型

 1.1泛型的好处:
           1)提高程序安全性
           2)解决警告线
           3)使用集合的迭代器避免强转类型强转类型转换
 1.2将泛型定义在接口上
     1)接口的子实现类已经明确了类型
     2)接口的子实现类不明确里面存储的类型
 1.3 泛型定义在方法上的格式:权限修饰符 <T> 返回值类型 方法名(T 参数名){...}
  固定格式  T--->Type 任何类型 
 1.4  public class ObjectTool<T> {泛型定义在类上
 1.5泛型的通配符(了解)
  <?>:代表Object或者任意的Java类型(jdk提供/自定义的)
  <? extends E>:向下限定,E这个类型以及 它的子类
  <? super E> :向上限定 E这个类以及它的父类 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值