|
SDK 软件开发包(JAVA SDK) JDK 软件开发工具包 JRE JAVA运行器 JVM java虚拟机 字节码解释器 将字节码解释成机器语言运行 .class文件是字节码文件 ( 由源代码.java经编译器运行后生成)
J2EE 企业级开发 J2ME 小程序的开发 J2SE 基础
搭建开发环境 JAVA_HOME 安装路径 CLASS_PATH=. 搜索字节码文件的路径 PATH=;%JAVA_HOME%/bin 系统搜索命令路径(在window用;%%分隔命令和引用命令)(在linnux下用:$$分隔命令和引用)
垃圾回收 system.gc()命令是建议JVM回收垃圾
在记事本.包java文件中只能有一个public公共类
包的作用:1.避免命名冲突2.有助于管理3.有助于访问权限 包的命名规则:要小写,以“ .“分隔来创建相应的文件夹 关键字package com/gov .公司域名.项目名.模块名 package com.tarena.airline.client package com.tarena.sd0707.day01 包语句放在程序的第一行有效行
javac 文件名.java 编译java文件并生成.class文件 java 文件名 运行java文件
当文本文件中含有包名时的编译运行命令: javac -d . 文件名.java 在当前目录下生成包并编译文件 javac -d . MyFirstJava.java 在当前目录下生成包并编译MyFirstJava.java文件 javac -d d: MyFirstJava.java 在d盘下生成包并编译MyFirstJava.java文件 java 包名.文件名 编译包名中的文件 java com.tarena.sd0707.day01.MyFirstJava
jar命令 生成归档(压缩)文件 jar cvf 新命名的文件名.jar . 表示在当前目录下将此目录下的所有文件压缩到一个新生成命名的文件中 unjar cvf 新命名的文件名.jar . 表示在当前目录下将此目录下的文件解压缩到一个新生成的文件中
javadoc 文件名.java 将此文件的文档注释文件提取出
注释 单行注释 // 多行注释 /* /* */ *..... */ 文档注释/** /** */ *....... */
import 包名 导入包里面的类 定义变量格式: 数据类型 变量名[=数值] 基本数据类型 布尔型 booolean true/false 字符型 char 整型 byte short int long 实型
整型常量 八进制数以0开头 十六进制以0x开头 二进制 八进制 十六进制 十进制有符 十进制无符号 0000 0000 0000 0x 0 0 标示符 :包(小写) 类(每个单词首字母大写) 变量(首字母小写之后每个单词首字母大写) 方法 (首字母小写之后每个单词首字母大写) 常量(全部字母大写) 命名规则:由字母.数字,下划线,$美元符 不能以数字开头 区分大小写 不能以关键字命名(所有关键字小写)
转义字符 换行符 \n \t \b退格 \“ 双引号 \‘ 单引号 包引入和包声明:import、package 类和接口的声明:class、interface、extends、implements 修饰符:final、static、abstract、public、private、protected、synchronized、transient、native 流程控制:if、else、for、while、do、switch、case、break、continue、default、return 数据类型:boolean、byte、short、int、long、double、float、char 某些数据类型的可选值:true、false、null 创建对象:new 引用:super、this 方法返回类型:void 异常处理:try、catch、finally、throw、throws、 操作符:instanceof 保留字:const、goto预留的关键字 注意:所有关键字都小写、标识符不能以关键字命名
有符号 首位是符号位 1负数 0 正数 无符号的 八进制 0 十六进制 0x 二进制 八进制 十六进制 十进制(有符号) 十进制(无符号) 0000 0000 0000 0x00 0 0 1000 0000 0200 0x80 -128 128 0111 1111 0177 0x7F 127 127 111 11111 0377 0xFF -1 (负数时由二进制数转换而成的补码) 255
5-----源码---反码----补码 5---0000 0101 --------1111 1010---------1111 1011---- -5
0000 0000 ---------0000 0001----1 负数
byte short int long byte b = 5; short s = 10; int i = 250; long length = 230L(如果要定义成long型数字末尾必须加L否则默认成int型);
float double double d = 3.14; float f = 2.3F(如果要定义成float型数字末尾必须加F否则默认成double型);
char Unicode
类型转换 由小到大 否则要用强制类型转换
写代码的基本规范:每一局以分号结束,每个语句以大括号括起来,每个语句块以大括号括起来,中间可以有任意空格。 java程序必须以类的形式存在,一个类必须要main方法才能被解释器解释。
对象 每个对象是唯一的 新建对象 格式 : 类名 新建对象=new 构造函数( ) 类 引用类型 : 类引用类型 接口引用类型 数组引用类型 Student s=new Student() Interator it; Strung str[];
程序运行时数据区 JVM堆区 方法区 Java栈区 对象(堆区) 类的类型信息.方法. 静态变量(方法区) 局部变量
变量作用域 变量有全局变量和局部变量 在一个类中局部变量可以与全局变量重名,但不可以有同名但不同类型的局部变量 在main方法中调用方法时只能访问到被调用方法中所在类的全局变量 定义在类中任何方法外的变量是全局(成员/实例)变量 成员变量初始化(系统可以赋默认值) int short byte long 0 double float 0.0 boolean false 引用类型 null 定义在类中任何方法内的变量是局部变量 局部变量必须先定义后使用 必须直接赋值以使之初始化
基本数据类型和引用类型的区别 : 引用类型表示复杂的数据类型 任何一个对象都必须有引用指向它 否则就是垃圾 一个对象可以有多个引用指向它, 但一个引用不可以指向多个对象
操作符 赋值运算妇 比较运算符 算术运算符 /结果是整数 3/2=1 ++a 和 a++的区别 位运算符 & | ^ (异或[相同为0相异为1]) ~ 取反 逻辑运算符 & | && || 移位运算符 << >> >>> 三元运算运算符 ? :
流程控制 if-else switch while for do-while 关键字break continue label 数组 定义 int arr[];int[] arr;String str[]; 实例化 用new分配内存空间 int arr[]={1,2,3};arr[0]=1;arr[1]=2;..... 类的成员:属性和方法 属性的定义:修饰符 数据类型 变量名 方法的定义:修饰符1 修饰符2 ......返回值类型 方法名(形式参数列表)throw[异常列表{} 方法调用的两个匹配:返回值和返回类型的匹配 严格匹配原则, 向上就近匹配原则 含有实参的方法调用过程: 给被调用的方法分配空间--把实参的值付给形参 --流程转到被调用方法中执行 -- 直到遇到 return语句或方法执行完毕 --关闭临时空间
方法的重载(overload) 在一个类中有多个方法同名但每个方法的形参列表不一致., 与返回类型无 关
值传递 对调用程序的原变量无影响 引用传递 两个引用同时指向同一个对象,一个引用改变,另一个引用同时改变,且两个引用的值一样
this 用来区分全局变量和局部变量(在同一个类中有同名的全局变量和局部变量) 调用当前对象(谁调用方法谁 this.age(全局变量)=age(局部变量) 就是当前对象) super
构造方法(函数): 无返回类型 方法名与类名保持一致且一般用public修饰 无参构造方法 有参数的构造方法 调用构造方法就生成对象,生成对象就调用构造方法 在你没有添加构造方法时,系统会给你提供一个无参的构造方法 如果你定义了构造方法,系统不会为你再提供无参的构造方法 一般给属性赋值一般都是通过构造方法
生成对象的步骤:分配空间--初始化属性--调用构造方法
访问权限控制修饰符 :public(任何类中都能访问) 和 private(只能在本类中访问) 的区别
面向对象(数据为导向)和面向过程(业务逻辑为导向)的区别 程序设计和软件开发要解决的本质问题:抽象 要抽象属性.业务逻辑. 以数据包含逻辑为导向 以业务逻辑包含数据为导向 OOP OOD OOA
结构体 struct 窗口类:最大化的方法.最小化的方法.关闭方法
面向对象的三大特性:封装.继承.多态
封装的概念: 类的封装:该公开的公开, 该私有的私有 属性:一般情况下,尽可能地私有 方法:该公开的公开,该私有的私有
公开的方法:get所需要的属性名 获得所需要的属性 public int getAge(){} set所需要的属性名 设置所需要的属性 public void setAge(int age){}
继承的作用 :代码的复用.多态的继承 继承的规则:任何父类适用的地方,子类一定适用(里氏代换原则) 子类不能继承父类的private成员方法. 1.任何子类的构造方法一定都会调用父类的构造方法 2.任何子类都有构造方法 3.任何子类构造方法第一行一定是this()或super() this this.区分全局变量和局部变量 this()调用本类的其他构造方法 super super.调用父类的构造方法
方法覆盖:方法名,参数类型,返回类型相同 子类覆盖后的方法的访问权限不能比父类更低(访问权限狭窄) 子类覆盖后的方法抛出异常必须
比较方法的覆盖和重载
多态的定义:一个对象,多种形态.着重是讨论对象的多态 例如:方法的重载和覆盖,是编译的多态 对象的多态:前提, 把子类对象当成父类对象来看 Animal父 Bird子 Animal a=new Bird(); 左边主观认为,编译时类型 右边客观存在,运行时编译 父类的引用指向子类(自动类型提升) 多态两大定理:把子类对象当成父类对象来看,就只能去调用父类中原有定义的属性和方法 把子类对象当成父类对象来看,调用的是覆盖后的方法 引用类型的对象 instanceof (父或间接父)类或接口名:看对象是否某类的实例 用于判断一个引用类型所引用的对象是否是一个类的实例 用于强制类型转换(引用类型转换:父类对象转换成子类转换)的转换 Fish f(子) a 父 Fish f=(Fish) a 要求:子父类关系 特征:判断 对象是否实例
equals方法: a equals (b) 判断a和b的地址是否相同
三大修饰符 访问权限控制修饰符 接口 内部类 集合框架 反射 String和StringBuffer 包装类
static final abstract
static 修饰方法,修饰属性,修饰代码块 修饰属性:静态属性 private static int count:描述整个类的特征 Animal中属性count用来统计动物园中有多少种动物 没有加static的属性(实例属性):描述某个对象的特征,跟着对象走,每个对象都有一份实例属性 子类覆盖父类的方法,如果父类这个方法是静态的,子类覆盖后的方法也必须是静态的 当把子类对象当成父类来看的时候,子类覆盖了父类的静态方法,如果父类这个方法是静态的,子类覆盖后的方法也必须是静态的 静态属性与实例属性的区别:静态属性在整个类中只有一份,实例属性是有多少个对象就有多少份 类加载:实例属性一定在初始化是才会给值 访问属性方法:类名.静态属性 对象名.实例属性 修饰方法:静态方法是用来描述整个类的行为 Animal类中,有addCount方法(静态方法) 在静态方法中访问的变量必须是静态变量,在 静态方法只能访问静态属性和本类属性 修饰代码块:例如 static{System.out.println();} 静态代码块在类加载之前就已经先执行 因为运行代码时,先要进行类加载工作 在静态上下文中,不能出现super或this。 final 修饰类,修饰属性,修饰方法,修饰局部变量。 修饰类:表示这个类不能被继承。 修饰属性:表示这个属性是常量,常量名必需全部大写.final属性必须初始化(赋值)可通过直接赋值或构造函数初始化,两种方式只能选其一. 直接赋值时,final常与static一起运用.。 修饰方法:表示这个方法不能被覆盖。 修饰局部变量:这个值不能被改变.
abstract 修饰类,修饰方法。 修饰类:抽象类中可以不含抽象方法,抽象类不能被实例化。 修饰方法:类中有抽象方法,那么类必须被定义为抽象类。
接口 : 接口用来解决单继承的问题。接口的定义分为接口的声明和接口体 接口体包含常量定义和方法定义 接口声明的格式:interface 接口的名字 接口体包含常量定义和方法定义.接口体中只进行方法的声明,不许提供方法的实现.所以方法的定义没有方法体,且用分号" ; "结尾. 使用interface来定义一个接口,必须用implements来实现接口。 一个类通过使用关键字implements声明自己使用一个或多个接口.如果使用多个接口,用逗号隔开接口名.
如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体. 如果一个类声明实现一个接口,但没有实现接口中的所以方法,那么这个类必须是abstract类. 在类中实现接口时,方法的名字.返回类型.参数个数及类型必须与接口中的完全一致. 接口中的方法默认是public abstract方法,所以类在实现接口方法时必须给出方法体,并且一定要用public来修饰,而且接口的常量默认是public static 常量. 由于接口体中只有常量定义和public的abstract方法定义,程序在编写接口时,允许省略常量前面的public,final,static修饰,也允许省略方法前面的public和
abstract. 如果接口方法的返回值不是void型,那么在类中实现该接口方法时,方法体至少要有一个return语句;如果是void型,类体除了两个大括号外,也可以没有任何语句. java提供的接口都在相应的包中,通过引人包可以使用java提供的接口.也可以自己定义接口,一个java源文件就是有类和接口组成. 类实现的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用类名或接口直接调用. 接口声明时,如果关键字interface前面加上public关键字,就称这样的接口是一个pubLic接口.public接口可以被任何一个类使用. 如果一个接口不加public修饰,就称为友好接口类,友好接口可以被同一个包中的类使用. 如果父类使用了某个接口,那么子类也就自然使用了该接口,子类不必再使用关键字implements声明自己使用这个接口. 接口也可以被继承,即可以通过关键字extends声明一个接口是另一个接口的子接口. 由于接口中的方法和常量都是public的,子接口将继承父接口中的全部方法和常量. 某个类实现某一个接口时,实现的方法相当于覆盖接口方法.实现方法不能比接口方法低.所以要用public来实现。 接口与接口可以多继承。 一个接口定义的方法必须是public abstract来修饰,并可以省略这两个修饰符。 接口内的变量定义必须用final static来修饰,并可以省略这两个修饰符。 接口没有构造方法,只能直接赋值。 在一个文件中只能有一个public接口。 接口的应用: 应用之一:在继承关系之外,建立类似于继承的关系,变相的解了单继承的问题。 应用之二:制定了标准,把接口的指定者与实现者分离 最大地实现程序的可扩展性和可移植性 继承和接口
命令行参数获取:获取args[]的内容 java a,java 需要获得的参数 toString方法:直接打印对象(对象中无参数),就是默认运用了toString方法,打印出对象在内存空间 中的地址 可以用于方法的重写 Canlender类
不同包的运用,当一个包要用到另外的包时,要把被运用的包用import导入
Object类中定义的equals()方法是用于比较引用对象中的地址是否相同,它的声明格式如下: public boolean equals(Object obj) 比较规则:当参数Obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false public boolean equals(Object obj){ if(this==obj)return true; else return false; } Integer类中也有equals()方法,Object类是Integer类的父类,当运用Integer类生成的对象去调用equals()方法,则会覆盖Object类中equals()方法,比较的是引用地址中的内容是否相等. String类中也有equals()方法,比较的是引用地址中的字符串是否相等. 访问权限控制修饰符 public private default protected insideclass samepackage subclass butongdebao public Y Y Y Y protected Y Y Y N default Y Y N N private Y N N N
类 属性 方法 局部变量(所有局部变量都不能用修饰符) public Y Y Y protected Y Y default Y Y Y private Y Y static Y Y final Y Y Y Y abstract Y Y
String类 要熟悉类里面的所有方法 对象池的概念:当用String的对象是直接赋值时,会先在对象池找有无此对象值,如果没有才会在对象池再新建一个对象的值 新建String类的对象,如果用new关键字,就会新生成一个新对象
StringBuffered类
包装类型 : 把基本数据类型字母的首字母大写就变为包装类型。 包装基本数据类型 需要包装类的原因:纯面向对象的语言
Integer类中的方法:Integer.parseInt("需要转化为整数的N进制数A",写出NB) 如果A为字母,则B最大为36
常常互转的类型 int>Integer IntValue() String >Integer Integer.parseInt(str) Integer>String toString(int) for each 循环 格式: for(需要循环数组的类型 需要提取的对象的名称: 需要遍历的数组名){}
集合框架的内容:应用广泛 集合框架(容器): 数组缺点:.数组大小不能自动扩容,只能手动创建新的对象..只能存放同类型的对象 数组优点:数组查询效率高,添加元素和删除元素效率低,如ArrayList的优缺点。 集合优点:能自动扩容,可以存放不同类型的对象 集合分为两大部分:要懂得添加元素,删除元素,遍历,获取指定的元素 java集合能方便地存储和操纵数目不固定的一组数据.java集合类位于java.util包中. java集合不能存放基本类型数据,而只能存放对象的引用.有时将" 集合中的对象的引用 "简称为"集合中的对象 ". Collection:添加一个一个的对象 Map(映射):添加一对一对的对象,以键值对的形式(Key(不可重复排好序) value(可重复))存放进去 集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复.它的有些实现类能对集合中的键对象进行排序. Set(集):不可重复,无序的,可以存放不同类型的对象 集合中的对象不按特定方式排序,并且没有重复对象.它的有些实现类能对集合中的对象按特定方式排序. List(列表):可重复的,有序的,可以存放不同类型的对象 集合中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象.list与数组有些相似. SortedSet:排好序的,不可重复的,存放同类型的对象,不能存放不同类型的对象 SortedMap:排好序的,不可重复的,存放同类型的对象,不能存放不同类型的对象 set.list,map统称为Java集合,其中set与数学中的集合最接近,两者都不允许包含重复元素.
Iterator:系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。 hasNext()方法:以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。 LinkedList(链表):每一个表格都有前后指针,前后指针分别指向前后列表对应的前后指针。链表查询效率低,添加元素和删除元素效率高。
Vector:是一个线程安全,效率高的ArrayList Arraylist :构造一个初始容量为 10 的空列表,线程不安全
collection接口:在collection接口中声明了适用于java集合(只包括set和List)的通用方法, 定义Set集合变量语法: Set<String指定集合元素类型> set=new HashSet<String指定集合元素类型>(); set.add(new String(""));//在()中输入数据 print(set);//遍历集 List<String指定集合元素类型> List=new ArrayList<String指定集合元素类型>(); list.add(); print(list); Map<String指定集合元素类型> map=new HashMap<String,String指定集合元素类型>(); map.put(); print(map.entrySet()); 如果集合中的元素没有排序,Iterator遍历集合中元素的顺序是任意的,并不一定与向集合中加入元素的顺序一致
哈希表:希望添加进来的元素等概率的随机地分布在底层数组中. 冲突处理机制 String类可重写hashcode()的方法. hashcode()方法原则:让我们认为相同的对象返回相同的hashcode值 让我们认为不同的元素返回不同的hashcode值 装载因子:在hashset方法用到75%的时候就会自动扩容,扩容时是以两倍的进度进行扩容, 当装载其他自定义类型元素时,要重写hashcode和equals方法. int hashCode() 返回此 collection 的哈希码值。当 Collection 接口没有为 Object.hashCode 方法的常规协定添加任何约束时,为了满足 Object.hashCode 方法的常规协定,程序员应该注意任何重写 Object.equals 方法的类必须重写 Object.hashCode 方法。需要特别指出的是,c1.equals(c2) 暗示着 c1.hashCode()==c2.hashCode()。
HashSet :覆盖了HashCode方法
SortedSet:排好序的集合,不可重复,只能存放相同类型的对象,这个类型能排序 TreeSet:底层用二叉树实现,此类实现 Set 接口,该接口由 TreeMap 实例支持。此类保证排序后的 set 按照升序排列元素,根据使用的构造方法不同,可能会按照元素的自然顺序 进行排序(参见 Comparable),或按照在创建 set 时所提供的比较器进行排序。 TreeSet添加了两个具有相同类型相同内容的元素时,用comparableto方法 比较时返回结果为0,那么就不再添加相同的元素
Comparable接口(lang):可比较的接口. 是String Integer常用的接口(单一条件的排序) comparator接口(util):比较器. 是航空系统常用的接口(多个条件同时进行排序), 如果同时使用Comparable和comparator那么比较器优先权最大
Itertor(util):迭代器 只有实现料Iterable接口才能用迭代器 Iterable(lang):可迭代的
Map HashMap:如果要添加重复的键值对时,新的vale值会取代旧的值 Hashtable:是线程安全的HashMap
SortedMap接口: TreeMap实现类: ......
|