java一些最基础的知识,不知道去查…

一、基本概念
JVM: Java虚拟机
JRE: Java运行环境 = JVM + 运行类库
JDK: Java开发工具集 = JRE + Tools

Eclipse:集成开发环境(IDE)
MyEclipse: eclipse+额外的扩展包

创建项目-》创建类(开发)-》自动编译--》运行

将项目文档化输出:
export -> java -> javadoc
输出结果是Html格式的帮助文档。

不同的注释方式:
  将会生成到最终的doc文档中
    不会生成到doc文档中


开发->编译(javac)->运行(java)

二进制 / 十进制 / 八进制 / 十六进制
0100 0001(2)    65(10)   0101(8)     0x41(16)
 
  
二、java语言基础
1.java基本数据类型和引用类型
八种简单类型:byte / short / int / long
                         char(16bit)
                         boolean
                         float / double

常用:int, double, boolean
了解位数,取值范围。
注意:
1) int取值范围不大!
2) 浮点数运算问题
3) 类型转换精度损失

引用类型(reference):值传递 / 构造过程

2.运算符
数学运算符:+ - * / %
逻辑运算符: > < >= <= == !=
                       && 
                       ||      
建议使用短路与&&而不是&
           和短路或||而不是|

&,|是位操作符,而&&,||只是逻辑操作符3&4(对), 3&&4(错)

三目运算符(三元运算符):
条件 ? 结果1 : 结果2
int pageSize = 10;
int totalCount = 103;
int pages = (totalCount % pageSize == 0 ) ? totalCount / pageSize : totalCount / pageSize + 1;

++ --:自增1,自减1
int i = 10;
int j = i++;
int m = ++i;

+ :字符串串联
String word = "hello" + "world";

google: SCJP 模拟题

java API: 函数库, 包含各种功能块。
java.lang.*:常用的功能,自动导入。
java.util.*: 常用的工具包
java.io.*: I/O
java.net.*: 网络编程
java.sql.*: JDBC

3.选择逻辑
if ... else if ... else...  ***
switch...case...

4.循环逻辑
for / while / do...while
break / continue

5.练习:排序算法
冒泡排序 / 选择排序 / 插入排序 / 快速排序

枚举类型
 jdk5.0以后新增加的关键字enum

三、面向对象(OO:object - oriented )
建模方式:按照自然的(客观世界)组织方式。
OOAD:oo analyst / design
按照面向对象的方式描述业务逻辑,进行业务系统的业务逻辑建模和开发。
1.类:class,用来描述具体的模型。
Book / Movie / Song / Product
类的特征:
1)数据:类的属性
2)行为:类的方法

2.实例(对象)
一本书:山楂树之恋,实例

3.创建实例的方式:new 类的构造器
Book book = new Book();
book.setName("月子");
book.setAuthor("白云");

String[] authors = {"白云", "黑土"};
book.setAuthor(authors);

4.方法:函数
方法的重载。(overload)
void setAuthor(String authorName){...}
void setAuthor(String[] authors){...}

5.参数传递规则:值传递

6.this
this.isbn = isbn;//本类的属性
this.setName("山楂树之恋");//本类的方法
this("1234");//本类的构造方法

7.继承
方法重写(override)
super,用法同this,指父类
访问控制(public protected default private)
多态 Animal b = new Bird();
        //b.fly();//错
        if(b instanceof Bird){
             Bird bb = (Bird)b;//造型
             bb.fly();//对
         }
Animal(public setName(){...})
   |
 Bird(public fly(){...})

java bean的规范:(VO:value object)
1)无参的构造方法
2)属性私有
3)公有的getter/setter方法
4)必须在包中

8.static 静态的,只此一份

9.final 修饰类 / 方法 / 变量

10. abstract
抽象方法 / 抽象类

11. interface
public interface animal{}
所有的变量默认是:public static final

类  implements(实现) 接口
类 extends(继承) 类
接口 extends(继承) 接口

A extends B , C : A,B,C全部是接口
A extends B implements C

12. Object类

toString(),大多数API类重写此方法

equals(),大多数API类重写此方法,自定义相等规则。

编写Book类,定义属性:id,name,author
重写toString,return name,
重写equals,id相等则返回true。

13. 常用类的API
1)String
2)Math: random, pow, floor, ceil,
3)Random: nextInt(100)
4)Date / Calendar
java中的基本时间表示为long
Date 对long数据的封装
Calendar包含历法:公历/农历等
首选Calendar

 date.setTime(long)    cal.setTime(date)
long -------------->Date ----------->Calendar
      <-----------------      <----------
      date.getTime()      cal.getTime()

二、集合
1.Collection: 定义集合概念,定义了集合的功能抽象。
1)功能:添加元素 / 删除元素 / 长度 / 是否包含 / 查找 / 集合交并差 / 迭代输出
2)java提供的实现类:
List : ArrayList / Vector / LinkedList /
Set: HashSet...

ArrayList:(新),使用变长数组实现的线性表集合。
Vector:(旧), 数组实现的线性表,线程安全。容量成倍增长。
LinkedList: 双向循环链表实现的线性表。
HashSet:利用HashMap实现,只有key的HashMap。

                                                 (interface)
            Collection(interface)            Map
                                                   |
  List(interface)    Set(interface) HashMap
                                           (class)
ArrayList   LinkedList    HashSet
(class)       (class)         (class)


集合的使用原则:包含同类元素
泛型:约束集合中元素的类型,减少编程错误;类型的强制转换是自动和隐式运行的。

集合的迭代:Iterator(迭代模式)
描述逐一遍历集合元素的方法。
顺序结构,有游标(指针)的概念。
游标默认在第一个元素之前,hasNext方法检查游标的下一个元素是否存在,next方法移动游标,并返回游标指向的元素。

注意:
迭代期间不要执行集合的add/remove等操作。

2.Map(interface)
key-value对: 键值对
key不可重复,value可重复

无序存储

常用子类:
HashMap
Hashtable(旧)
Properties

key  value
1, Book:4, 鹿鼎记,金庸
2, Book:2,月子,白云
3,    Book:  3,  多情剑客无情剑,古龙

3.关于排序
Collections : 集合工具类
Collection: 集合类

如果希望对集合中的对象排序,对象必须实现Comparable接口,否则会出现异常。
Comparable中的方法compareTo中定义排序原则.

Comparator中的方法compare定义排序原
则。

//排序原则定义在对象内部
Collections.sort(list)
//对象和排序原则分离
Collections.sort(list, Comparator)


三、内部类
定义在类(宿主类)中的类叫内部类。
匿名类。
主要作用:封装。模拟多继承
class A extends B{
    class C extends D{
    }
}


一、异常
1.异常的种类
Error:系统不可恢复的错误。JVM发生
   内存溢出,OS崩溃....
Exception:程序可检查并处理的错误。
   格式错误,空指针,文件找不到...
   是程序员需要关注并处理的。

2.常见的Exception:
NullPointerException
ArrayIndexOfBoundException
FileNotFoundException
ClassCastException
ArithMeticException....

String str = "123";
Integer i = (Integer)str;

Student extends Person
Person p = new Student();
Student s = (Student)p;
自定义异常:大量使用,继承自Exception。异常名字要有实际意义。
EmailExistException
UsernameOrPasswordException

3.异常的处理方式:捕捉 / 抛出
1)捕捉
try{
    可能产生异常的代码
}catch(异常的种类 e){
    对异常的处理
}finally{
    最后一定执行程序块,通常释放资源等通用的操作。提供统一的出口。
}
catch块可以有多个。捕捉不同类型的异
常。
finally是可选的。

2)抛出 throws

4.自定义异常
系统不会抛出(系统不认为是异常),通常业务逻辑错误。
如:人数是负数
int count = getCoun();

需要自定义异常类(Exception子类),在需要时主动抛出。

用户名/密码错NameOrPwdException
用户名已使用UserExistException
email重复EmailExistException

 

案例:用户注册登录练习。

二、java IO
java.io.*
stream : 字节序列(byte数组)
输入流 / 输出流
字节流 / 字符流
低级流(节点流) / 高级流(处理流)

File: 文件 / 目录
FileInpuStream / FileOutputStream
FileReader / FileWriter
BufferedReader / BufferedWriter
...

properties:属性文件,数据库参数 / 国际化,存放键值对。
db_oracle.properties为例。
利用java IO / Map集合类读取属性文件,并获取参数。

常用API:
字节流:
InputStream
 |--节点流(流开始的地方,数据的源头)
    |--FileInputStream
    |--ByteArrayInputStream
 |--处理流(封装节点流,本身不是数据源)
    |--BufferedInputStream
    |--ObjectInputStream
    |--InputStreamReader
    |--ZipInputStream

OutputStream
 |--节点流(流结束的地方,数据的目的地)
    |--FileOutputStream
    |--ByteArrayOutputStream
 |--处理流(封装节点流,本身不是数据源)
    |--BufferedOutputStream
    |--ObjectOutputStream
    |--InputStreamWriter
    |--ZipOutputStream
 
字符流(以字符为处理单元 byte->char)
(处理文本文件)
Reader
 |--InputStreamReader 核心(byte->编码-                                             >char)
 |--FileReader=InputStreamReader
      +FileInputStream
 |--BufferedReader:readLine()

Writer
 |--OutputStreamWriter(char->编码-                                      >byte)
 |--FileWriter = OutputStreamWriter
                        + FileOutputStream
 |--BufferedWriter: println()

三、线程
1.程序 / 进程 / 线程
多线程:多个执行线索(多线程)并行运行
多个线程争取CPU时间,线程调度器
线程的优先级

2.java线程的构造方式:两种
1)继承Thread类
2)实现Runnable接口

3.线程的状态图:

                               Block                                                        (阻塞)
                         /解除          \有阻塞事件
         start                         \
  新建------>Runnable-------->Running->死
                  (可运行)              (运行)

4.同步sychronized
临界资源:每次仅允许一个线程访问的资源。
当多个线程并发读写临界资源,会发生线程安全问题。
解决:同步代码块的方式,sychronized
方式:
  sychronized(同步监视器){ //代码块 }
同步监视器:任意一个对象实例,是多个线程之间的互斥锁机制。如果多个线程访问同一个临界资源,必须获得同步监视器的锁才能执行。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值