Java核心技术卷1——第三章(上)

程序设计结构
  • 简单程序
    • 关键字class:
      • 表明Java程序中的所有内容都包含在类中
      • 加载程序逻辑的容器
      • 类名
                            
    • 源代码文件名
      • 公有类名
      • .java扩展名
      • .class与源文件存储在同一目录
    • main
      • 从main方法开始执行(main方法强制public)
      • main默认正常退出返回0
        • 返回其他的代码
          • System.exit()
    • {}块——划分程序各部分
  • 注释
    • //
    • /*不能嵌套*/
    • /**
                    *用于自动生成文档
                    */
  • 数据类型
    • 注:char类型16位不足以满足日常需求
      • 代码点采用16进制书写
      • 加上前缀U+
      • Unicode代码点分成17个代码级别
        • 基本的多语言级别U+0000~U+FFFF
        • 16个附加级别U+10000到U+10FFFF(包括一些辅助级别)
      • UTF-16编码代表一个代码单元
        • 采用不同长度的编码表示所有Unicode代码点
        • 基本的多语言级别16位,代码单元
        • 附加级别一对连续的代码单元
          • 落在基本的多语言级别的空闲的2048字节内——替代区域
          • 第一个代码单元:U+D800~U+DBFF
          • 第二个代码单元:U+DC00~U+DFFF
  • 变量
    • 属于一种类型type
    • 声明变量
      • 可一行声明多个变量(不推荐)
    • 初始化变量
      • 赋值语句显示初始化
      • 可声明初始化一起
        • int i=10;//c++中表示定义变量,
        • extern int i;//c++中表示声明变量
        • Java不区别
    • 常量
      • final声明
        • 表示只能被赋值一次,之后不可修改
        • 习惯大写
      • 类常量
        • 作用于类的多个方法
        • static final
        • 同时声明public,可用于其他类:类名.变量名
  • 运算符
    • 算术运算符+-*/%
      • 二元运算符:+=、-=、*=、/=、%=
        • x+=4
      • 自增与自减
        • x++、x--
    • 关系运算符
      • ==、!=、<、>、<=、>=
    • boolean运算符
      • &&、||、!
      • 短路方式
    • 三元操作
      • ?:
    • 位运算符
      • &、|——>获得布尔值
      • ^、~
      • >>(右移【符号位填充高位】)、<<(左移)、>>>(右移【0填充高位】 )
        • 要对右侧参数x%32,long类型的%64
    • 数学函数与常数
      • Math类
        • 平方根Math.sqrt(x);
        • 幂运算Math.pow(x,a);
        • 三角函数Math.sin  Math.cos   Math.tan   Math.atan   Math.atan2
        • 指数函数Math.exp
        • 自然对数Math.log
        • Math.PI
        • Math.E
      • JDK5.0可不加Math(要import java.lang.Math.*)
      • 数值类型间转换
        • 低可高
        • 转float都会丢失精度,int转double不会丢失精度
        • 运算n+f(n为整数,f为浮点数)
          • 有double,全转double
          • 有float,全转float
          • 有long,全转long
          • 否则全转int
      • 强制类型转换
        • 高转低
        • 截断
          • (int)9.997      【小数部分将浮点型转换为整型】
          • (byte)300=44【超出目标类型表示范围】
        • 舍入:Math.round方法(返回值类型为long)
      • 括号和运算符级别
      • 枚举类型
        • enum EnumName{VALUE1,VALUE2,VALUE3};
        • 使用:EnumName 变量名=EnumName.Value2;
        • 可以赋null值
  • 字符串
    • Unicode字符序列
    • 预定义类String
      • substring(a,b)提取子串
        • b为不想复制的第一个位置
        • a到b-1(a最小为0)
        • 易计算子串长度
          • b-a
      • 拼接(+)
      • 不可变字符串
        • 修改:拼接——str1 = str1.substring(0,3)+“p!”
          • 效率不高
        • 字符串共享
        • Java字符串相当于char* str = "hello"
          • char* temp =malloc(6);
          • strncpy(temp,str,3);
          • strncpy(temp+3,"p!",3);
          • greeting = temp;
        • 赋予另一个值时,当其他字符串变量也不使用该值时,释放内存(垃圾回收机制)
      • 检测字符串是否相等
        • str1.equals(str2)
        • str1、str2可为常量
        • 不区分大小写比较:str1.equalsIgnoreCase(str2)
        • ==字符串放置位置相同
          • 字符串常量共享
        • +、substring的结果都不是共享的
        • compareTo和strcmp相同
      • 获得给定字符串所需的代码单元
        • str.length()
      • 获得给定字符串实际的长度,即代码点
        • str.codePoint(0,str.length());
      • 返回位置n的代码单元(n属于(0,s.length()-1))
        • str.charAt(n);
      • 获得第i个代码点
        • int index = str.offsetByCodePoints(0,i);
        • int cp = str.codePointAt(index);
      • 字符可能占1代码单元,可能2个
        • 遍历字符串,推荐
          • int cp=sentence.codePointAt(i);
          • if(Character.isSupplementaryCodePoint(cp)) i+=2;//辅助字节
          • else i++;//
        • 回退操作
          • i--;
          • int cp = sentence.codePointAt(i);
          • if(Character.isSupplementaryCodePoint(cp)) i--;
      • 字符串API
    • 构建字符串
      • 连接字符串
        • 构建新的String对象
        • 用StringBuilder类避免发生
          • StringBuilder builder = new StringBuilder();//空字符串构建器
          • builder.append(ch);//添加字符或字符串
          • String completedString = builder.toString();//转String对象
          • 单线程
          • API
        • StringBuffer类
          • 上面的前身
          • 效率略低
          • 允许多线程添加、删除字符
  • 输入输出
  • 控制流程
  • 大数值
  • 数组
                   详情见下
 
posted @ 2018-10-09 15:52  Giles_Gu  阅读(544)  评论(0)    收藏  举报