zoukankan      html  css  js  c++  java
  • Core Java 第三章总结

    最近下定决心入坑后端了,要学的比较多,首先本周把之前看的Core Java复习一遍。

    VIO课结课了,拿了优秀学员,但是可能不会去做这个了吧,有空把作业内容补上来

    数据类型:8种基本类型
    整型4种
    int 4 short 2 long 8 byte 1
    浮点2种
    float 4 double 8(大部分都用double)
    用p不是e
    非数值:
    无穷大 Double.POSITIVE_INFINITY
    小。。。NEGATIVE
    NaN:0/0或负数平方根
    非数值都认为不等
    浮点不能用if(x==Double.NaN)
    要用if(Double.isNaN(x))
    保证精度的场合需要BigDecimal类
    char 不怎么用
    UTF-16 2-4个字节
    boolean 和C不同不能直接和整型转换
     
    变量:每个变量属于一个类型type
    声明后必须显式初始化。
    声明尽可能靠近第一次使用的地方
    final关键字指示常量,赋值后不能更改
    类常量:static final, 定义在main方法外,所有类中方法都能用
     
    运算符
    与或非&& || !,三元 a?b:c
    移位>>>用0填充,>>根据符号数填充(补码)
     
    类型转换:规则和c一样,强制类型转换也是加括号
    运算符级别同C
     
    枚举类型:
    enum Size{ Small, Medium, Large};
    Size s = Size.Medium;//可以写null
     
    字符串:实际上是Unicode序列,标准库中有预订义类String
    s.substring(a,b);
    拼接用+ 任何对象都能转成String
    Java中字符串不可更改,只有新字符串!
    但是存储区可以共享(指针指向同一个)
    s.equals和==不同,一个比较内容,一个比较引用。(记得String的equals方法被重载过,看到了回来确认)
    API太多了
     
    StringBuilder类
    new出一个对象,不断append添加内容,可以用setCharAt更改字符,以及insert插入,以及delete,最后输出时toString()
    StringBuilder 在添加字符时不同于StringBuffer有Sychronized关键字,导致线程不安全,这两个类都是通过底层的char数组以及控制一个count数值控制字符串大小。
     
    final变量的访问在编译期间都会直接被替代为真实的值
     
    输入输出——第三章讲不细
    输入Scanner in = new Scanner(System.in); //import java.util.*;
    in.nextLine(); in.next()
    也可用console
    Console con = System.console();
    con.readline();
     
    IDE的Console可能不能启动
     
    在jdk说明文档中,对console类的描述为:
    访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)。
    虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。
    如果此虚拟机具有控制台,那么它将由此类唯一的实例(可通过调用 System.console() 方法获得)表示。如果没有可用的控制台设备,那么对该方法的调用将返回 null。
     
     
    格式化输出 printf("%.2f",10000./3.);
     
     
    控制流程
    块作用域{}
    if else while() do while(); for(;;) for(type e: array)
    switch(choice){
    case 1: break;
    case 2: break;
    default: break;
    }
    case 可以是常量表达式、枚举、字符串字面值
     
    BigDecimal
    不太重要,主要表示价格用,详细使用遇到再查。性能比常量差。
     
    数组:*
    int[] a; int a[]; 声明等价
    初始化时需要new关键字。 int[] a = new int[100];
    数字数组全初始化为0
    数组不可扩容,有相应需求用array list 数组列表
    * foreach式循环的对象必须是数组或者是实现了Iterable接口的类对象
    java可以初始化匿名数组同时赋给变量(等价于重新初始化) array = new int[] {1,2,3,4,5};
    数组拷贝 使一个变量引用同一个数组 int[] array2 = array1; 此时array1[0]==array2[0];
    copyOf方法会拷贝到新的存储区,并根据参数重新定义数组大小
    数组排序用sort,内部是快排
     
    多维数组:double[][] balances;
    初始化也是给尺寸balance= new double[2][3];
    可以不知道尺寸直接初始化balance={{1,2},{2,3}};
    多维数组不支持一次性foreach,每一层都要单独调用foreach
     
    不规则数组:多维数组实际上是数组的数组(理解为double **,指针的数组),可以自己给每一行单独初始化长度
  • 相关阅读:
    针对 jQuery Gridly 控件显示多少列的问题。
    网上找的几款拖拽插件
    商品价格加价区间的实现(策略模式)
    【C#】GC和析构函数(Finalize 方法)
    C#微信开发之旅(一):前言
    Opserver配置Redis、SqlServer监控
    线程安全的方式引发事件
    使用SSL的IIS下WCF配置(CSDN手动迁移)
    由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法(CSDN手动迁移)
    EF Code First(The model backing the '***' context has changed since the database was created.解决方法)(CSDN手动迁移)
  • 原文地址:https://www.cnblogs.com/CaptainLL/p/11555904.html
Copyright © 2011-2022 走看看