java基础

博客介绍了Java相关基础内容,包括JRE、JDK、JVM的概念,数据类型、集合等基础知识,如基本类型和包装类型,ArrayList与LinkList的优劣等。还提及了异常继承关系、堆栈和方法区,最后说明了Java环境搭建方法及Fibonacci数列。

概述

  • jre是java运行环境
  • jdk是java开发工具包,包含jre
  • jvm是Java虚拟机

基础知识

  • 数据类型
    • 基本类型
      • 整型
        • short 16位
        • int 32位
        • long 64位
      • 浮点
        • float 32位
        • double 64位
      • 字节
        • byte 8位
      • 字符
        • char
      • 布尔
        • boolean
    • 包装类型
      - Boolean
      - Number
      - Byte,Short,Integer,Long,Float,Double
      - Character
  • StringBuilder、StringBuffer和String
    • StringBuilder
      • 变量,对变量进行操作就是直接对该对象进行更改,线程不安全,最快
      • 适用于少量的字符串操作
    • StringBuffer
      • 变量,对变量进行操作就是直接对该对象进行更改,线程安全,快
      • 适用于单线程下在字符缓冲区进行大量操作
      StringBuffer buffer = new StringBuffer("hello");
      String buffer = stb.toString();
      buffer.append(" world");
       buffer.insert(5,"000" );
      
    • String
      • 常量(private final char value[]?,对变量进行操作就是重新指向已存在或新创建的对象,慢
      • 适用多线程下在字符缓冲区进行大量操作
       String[] str = str.split(",");
       String stri1 = str.substring(start,end)
       char c = str.charAt(i);
       int index = str.lastIndexOf(".");
       String stri2 = str .toUpperCase()
      
  • 时间
    // 格式化日期
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
    sdf.format(date)
    //string转日期
    Date date = sdf.parse("2019-04-12 20:54:04"); // 格式必须一致
    // 获取当前年月日,时间
    Calendar calendar = Calendar.getInstance();
    calendar.get(Calendar.YEAR)
    calendar.get(Calendar.MONTH)+1)
    calendar.get(Calendar.DAY_OF_MONTH)
    Date date = calendar.getTime() // Sun May 26 22:19:45 GMT+08:00 2019
    // 获取是一年中第几周
    int week = calendar.get(Calendar.WEEK_OF_YEAR);
    
  • io
     File dir = new File("E:\\FileTest\" );
     file.mkdirs();
     dir.delete();
     File file = new File("E:\\mytouch.txt");
     file.createNewFile();
     file.exists();
     file.getAbsolutePath();
     file.renameTo(new File("E:\\new_mytouch.txt"));
     //文件过滤
    
  • 类型转换
    • 自动装箱拆箱
      Integer x =1;
      int num = x;
      
    • String转int
      • int a = Integer.parseInt(str);
    • int转String
      • s=String.valueOf(i);
    • String转BigDecimal
      • BigDecimal bd = new BigDecimal(“2.30”);
    • BigDecimal转String
      • String result = bd.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
  • 集合
    • 集合不允许存放基本数据类型,自动转为包装类存储
    • Map 键值对,键不重复
      • HashMap
         // 遍历
         HashMap<String,Student> hashMap = new HashMap<>();
         Student stu = new Student("李明", "男");
         hashMap.put("Jack",stu);
         Set keys = hashMap.keySet();
         Collection values = hashMap.values();
         for (Object key:keys){
           	Student stu1 = hashMap.get(key);
           }
        
      • TreeMap

    • Collection 重复,无序
      • List 重复,无序
        • ArrayList:对数组操作的封装
          • 优势
            • 数组通过下标直接找到元素,查询快
          • 劣势
            • 实例化新数组和复制数据都需要时间,添加、删除慢
          ArrayList<String> strings = new ArrayList<>();
          // Collections工具类
          Collections.addAll(strings,"Red","Blue","Green");
          // 对值排序
          Collections.sort(strings);
          // 对对象排序
          ArrayList<People> list = new ArrayList<>();
          Collections.sort(list, (o1, o2) -> o1.name.compareTo(o2.name)>0 ? 1: (o1.name.compareTo(o2.name)==0 ) ? 0:-1);
          // 对有序集合,二分法查找
          int num = Collections.binarySearch(strings, "Red");
          // 最大值
          String max = Collections.min(strings);
          
        • LinkList:双向链表,支持两端插入和移除
          • 优势
            • 实例化对象并改变指针即可,添加、删除快
          • 劣势
            • 先判断靠近那一端,再向中间依次查询效率低,查询慢
      • set 不重复,无序
        • HashSet
          // 遍历,无序
           HashSet hashSet = new HashSet();
           hashSet.add("a");
           Iterator iterator = hashSet.iterator();
           while (iterator.hasNext()){
           	 System.out.println(iterator.next());
          }
          
        • TreeSet
          • 遍历方式和hashSet一样,使用元素的自然顺序对元素排序
  • static
    • 方便在没有创建对象的情况下来进行调用(方法/变量)
    • static代码块
      • 只会在类加载的时候执行一次
      • 将一些只需要进行一次的初始化操作都放在static代码块中进行
  • 枚举enum
    // 定义枚举常量
    public enum Genders  {
    	Male,Female;
    }
    // 使用
    public class Student {
        public Genders  sex;
        public void test() {
            Student student = new Student();
            student.sex = Genders.Male;
        }
    }
    
  • 异常继承关系
    • Object
      • Throwable
        • Error
          • 仅靠程序本身无法恢复的严重错误
        • Exception
          • 抛出或处理的非严重错误
          • RuntimeException
            • 不要求程序必须处理
          • 非运行时异常,必须处理
  • 堆(heap)栈(stack)和方法区(method)
      • 只有一个,被所有线程共享,存对象,都有内存地址值
      • 每个线程有一个,其他栈不能访问,存基本数据类型(字面值)和对象的引用变量
    • 方法区(静态区)
      • 被所有的线程共享,存class和static变量

环境搭建

  • 安装jdk并配置环境变量
    • https://www.cnblogs.com/tiankong101/p/4226559.html
  • 扩展
    • Fibonacci sequence黄金分割数列
      • 前面两个数为1,1,后面每个数为前两个数之和
        • 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610
      • 前一项与后一项的比值越来越逼近黄金分割0.618
        • 5÷8=0.625,55÷89=0.617977,144÷233=0.618025
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值