马士兵课程笔记

 

  • J2EE框架
    • EJB (Enterprise JavaBean) 3.0
  • JAVA两大特色
    • JVM
      • 一次编译, 到处运行
      • 跨平台
      • JAVA是解释型的语言 -- 要编译成.class文件, 再由JVM逐条解释执行
    • 垃圾收集器
  • JDK安装
    • 安装路径最好没有空格, 以避免在某些情况下出错; 另一种避免的办法是在添写环境变量或类似时候用双引号把路径框起来
    • 装完JDK最好再装一个JRE, 让开发环境与其他正常使用的JAVA程序的运行环境区别开
  • 环境变量
    • %PATH%: "%JAVA_HOME%\bin;"
    • %CLASSPATH%: ".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;..."编译器从前向后寻找引用到的类, 因此顺序很重要, 谨防引用到的类在多个地址中出现, 连接到意料以外的类 (在Eclipse中没有这种担心).
  • 一个源文件里只能有一个public类(而且必须和源文件同名)
  • 入口 -- main方法
  • java严格区分大小写
  • 标识符命名规则
    • 字母, 数字, '_', '$'
    • 以字母, '_'或'$'开头
    • 大小写敏感
    • 类名首字母大写, 变量和方法名首字母小写;
    • 驼峰标识: 命名中的第一个单词后每个单词首字母都大写
  • 常量
    • 整型常量默认是int, 要定义long常量就得加L
    • 浮点型常量默认是double, 要定义float常量就得加f
    • 另一种: 值不可变的变量final
  • 变量
    • 变量从本质上看是一块内存区域, 通过变量名来访问
      • 先声明, 再赋值(有默认初始值, 但方法内声明的必须显式地赋值), 才使用
      • int i1, i2, i3 = 4; 只有i3的值是4

马士兵课程笔记 

    • 成员变量(类内方法外) 和 局部变量(方法内), 作用域; 编译器会给成员变量初始化默认值, 但局部变量必须自行初始化
    • 基本数据类型 和 引用数据类型
    • 基本数据类型
      • 四类八种
        • 整数型 -- byte, short, int, long
        • 浮点型 -- double(4), float(8)
          • 有一个表示精度问题, 浮点型不能直接判断相等, 而必须采取二者差值足够小的判断方式
        • 布尔(逻辑)型 -- boolean, 值只能是true和false, 不能是数字甚至null
        • 字符型 -- char, utf-16编码俩字节, "char c = '\n0061';"
      • 类型转换
        • 依容量, 小向大是自动转换的, 大向小转换要加强制转化符, 会损失精度甚至出错, 需要程序员自行判断和控制
        • 整型大向小强制转换时是将超出表示范围的部分简单砍掉, 而浮点型不是
        • 多种数据类型在一起运算时, 是自动转换成容量最大那个类型
        • byte, short, char互相转换或者运算时, 其实是先转换成int, 所以需要强制转换
    • 引用数据类型--除基本类型以外的数据类型
      • 引用类型占两块内存
        • 首先是引用名, 仅存放着应用对象的地址;
        • 然后是new 出来的对象, 位于引用所指向的地址(在堆内存里)中;
        • 如 String s = "Hello world";
          // 等同于
          String s;
          s = new String("Hello world");
          

  • 运算符
    • 算数运算符
    • 关系运算符
    • 逻辑运算符: 抑或^, 短路与&& 和 短路或|| (当第一个运算数触发, 就不再算第二个, 效率更高)
    • 位运算符: &, |, ^, ~, >>, <<, >>>
    • 赋值运算符: =, 扩展赋值运算符: +=等
    • 字符串连接运算符: +
    • 三目条件运算符

  • 语句
    • 条件语句 switch(...) {...case xx:...break;...default:...}
      • 使用break防止case穿透
      • 多个case可以合并在一起
      • default补漏
      • java的switch语句只能探测int值(其他类型其实是自动转换)
    • 循环语句
      • for(初始化语句; 循环判断语句; 修改判断变量) {...}
        • JDK1.5 后的增强型 for (a : C) {...},用于对集合内元素遍历,不适合需要用到数组内元素索引的
      • do {...} while (...) ; 分号一定不能忘
      • break 和 continue: 与if结构无关
  • 类与对象
    • 思想
      • 面向过程: 方法层次上的复用
      • 面向对象: 对象层次的复用
      • 问题中有哪些类和对象, 各类有什么属性和方法, 类之间有什么关系
      • 合适的方法应该出现在合适的类里
      • 在内存中区分类和对象
        • 类是静态的概念, 位于代码区
        • 对象是new出来的, 位于堆内存. 成员变量(静态变量除外)每个对象都有各自存储空间和值, 而方法只有一份, 执行时才占用内存 
    • 概念
      • Object = Instance
      • (静态)属性 = 成员变量
    • 类之间的关系
      • 关联关系: "A类里的某个方法的参数是B类的对象" (最弱的关系)
      • 继承关系: "B类是一种A类" (一般与特殊) (C++的多重继承)
      • 聚合关系: "B类是A类的一部分" (整体与部分) 聚集(松耦合)与组合
      • 实现关系: (接口, 多态)
    • 引用(类似C++中的指针概念)
      • java中的对象是通过引用对其进行操作的.
    • 方法的重载: 方法名相同, 参数列表不同, (返回不同不允许)
    • this:
      • 在类的方法定义中使用, 代表调用该方法的对象的应用;
      • 当必须指出当前调用方法的对象是谁时用到this;
      • 可用于区分局部变量(或参数)与成员变量重名的情况;
    • static:
      • 为该类的所有对象公用, 在第一次使用时被初始化
      • 存储: 在data segment, 仅一份;
      • 访问: 类.xxx; 对象直接访问(同一个处空间)
      • 用static声明的静态方法, 在调用该方法时, 不会将对象的引用传递给它, 所以在static方法中不可访问非static的成员.
    • package 和 import:
      • 解决类的命名冲突问题
      • java编译器把包对应于文件系统的目录管理, 用'.'来指明包(目录)的层次, 所以包应该位于文件系统相应的目录中, 否则解释不能通过;
      • 命名惯例: 域名倒过来, 从大到小, 从上到下, 从外到里;
      • 该类的源码文件可能会有影响, 别放在同目录或者%CLASSPATH%目录下;
      • 必须写在源文件第一行;
      • 无名包, 裸体类
      • 访问别的包的类: 写全名; import引入, 应避免用*;
      • Class文件的最上层包的父目录必须在%CLASSPATH%内, 强烈建议每个project有独立的%CLASSPATH%;
      • 运行时也要写全名. 
      • Eclipse解决了上面许多问题.

你可能感兴趣的:(java基础,笔记,马士兵)