“smallka”通过精心收集,向本站投稿了15篇Java知识点总结,以下是小编为大家准备的Java知识点总结,欢迎大家前来参阅。

篇1:java知识点总结
java集合知识点总结
一、介绍
所谓方法,就是用来解决一类问题的代码的有序组合,是实现一个功能的模块。方法也叫函数,但是在Java中我们一般都称作为方法。
那么为什么需要方法呢?我们中的很多初学者应该都或多或少的考虑过这个问题。那么我们就来简单的介绍一下写方法的意义。
我们最开始写代码,是把所有的代码都罗列堆积到main方法中,这也是没有优化的'代码。那么我们的代码重复度会变的很高,代码的复用性也相对来说差一些,并且相对我们开发者来说,难懂难维护和管理。针对这种状况,就提出了方法。
把一个功能的实现抽取成方法是为了减少代码的耦合度,那么什么是耦合度呢?耦合度顾名思义,就是两者之间的密切关系程度,也可以理解为互相依赖的程度。每个函数也就是方法都单独的拥有自己的功能,这样就能降低耦合度了。
如果还不太明白的话,请参考以下的例子:
一个计算器,有加减乘除功能,可以把加减乘除的实现都变成一个个的方法。这样做的好处就是,万一有一天要求变化了,比如除法需要保留2位小数之类的,只要改实现除法的这个方法就可以了;如果没有把加减乘除这4个操作分割开,而是只写成了一个方法的话,那么只能对所有代码进行修改,不但找起来麻烦,而且在程序大了之后就会出现很多问题。
二、方法的语法
一般情况下,定义一个方法的语法是:
三、方法语法的详细介绍
1、访问修饰符:方法允许被访问的权限范围。
可以是 public、protected、private 甚至可以省略 。
public:公共权限 修饰类、属性、方法。可以被任意类访问
protected:受保护的权限 修饰属性、方法。可以被同包类访问或者不同包下的该类的子类才可以访问。
省略不写:同包权限 修饰类、属性、方法。只能被同包的类访问
private:私有权限 修饰属性、方法。 只能在本类中访问
2、返回值类型:方法返回值的类型。
如果方法不返回任何值,则返回值类型指定为 void。
如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。
3﹜ 方法名:定义的方法的名字,必须使用合法的标识符。
标识符的命名规范:在这里我就说一下方法的命名规范。方法命名分为以下两种情况:
一个单词的方法名:所有字母小写。
举例:sum;
两个或者两个以上的方法名:第一个单词首字母小写,第二个单词以上的单词首字母大写。
举例:getSum(); getPeopleAge();
4﹜ 参数列表:传递给方法的参数列表。
参数列表由参数的数据类型和参数名组成。参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开 。
5﹜ 方法的分类
根据方法是否带参、是否带返回值,可将方法分为四类:
① 无参无返回值方法
② 无参带返回值方法
③ 带参无返回值方法
④ 带参带返回值方法
四、方法重载
我们学习了方法,但是这里有一个概念很容易搞混乱。就是方法重载。那么什么是方法重载呢?只需要记住下面一句话。就可以很容易的区分什么是方法重载了。
在同一个类中,方法名相同,参数列表不同。与返回值类型无关。注意:参数列表不同包括参数的个数或者参数的数据类型不同。
五、构造方法和方法的区别
构造方法:
public 类名(参数列表){...}
public Demo02(){....}
方法:
修饰符 返回值类型 方法名(参数列表){...}
public void getSum(){....}
六、方法重写(也叫方法覆盖)
方法重写,简单来讲:就是一个类继续了另一个类的时候,对父类方法的重新实现。
这个重新实现,就是使用相同的方法名,相同的参数列表和相同的返回类型,访问修饰符的使用和父类相同或者更宽。
举例:
class F {
public String m(String s) {
return s;
}
}
class C extends F {
@Override
public String m(String s) {
return s+“extends”;
}
}
篇2:java知识点总结
1. 基本数据类型
整形:
byte 1 个字节
short 2 个字节
int 4个字节
long 8个字节
字符:
char 2个字节
浮点数:
float 4个字节
double 8个字节
布尔:
boolean 1个字节
2.java 7 新增二进制整数,以0b或者0B开头
3.java中字符时16位的Unicode编码方式,格式是'\uXXXX',其中xxxx代表一个十六进制整数
4.java中规定了正无穷大、负无穷大和零
正无穷大= 一个正数除以0
负无穷大= 一个负数除以零
0.0 除以0.0 或者 对一个负数开方 得到一个非数
5. 在java中布尔类型只能是true和false
6. 在java中没有多维数组
看似像C语言中的多维数组不是真正的数组,比如 a[3][4] , a[0] a[1] a[2] 是真实存在的,装的是地址,和c语言中动态分配为的数组一样
int [][] b = new int[3][4]
7. Java中带包的编译方法
javac -d . Hello.java 会在当前目录下生成目录树,运行 java 包名字.类名字
8. Java多态中的对象的filed 不具有多态性,如 父类 对象 = new 子类(), 对象.field 是调用的父类的,即使子类中覆盖了该字段。
9. instanceof 运算符
格式: 引用变量名 instanceof 类名(或者接口) 他用于判断前面的对象是否是后面对象的类,子类、实现类的实例,是返回true,否者返回false。
10. Java 中基本数据类型和对应封装类之间的转化
int a = 1;
Integer A = new Integer(a);
a = A.intValue();
其他的类型也是这样的。
11.抽象类和接口有什么区别?
1)abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。
但是,一个类却可以实现多个interface。
2)在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3)abstract class和interface所反映出的设计理念不同。
其实abstract class表示的是“is-a”关系,interface表示的`是“like-a”关系。
4)实现抽象类和接口的类必须实现其中的所有方法。
抽象类中可以有非抽象方法。
接口中则不能有实现方法。
5)接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6)抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7)接口中的方法默认都是 public,abstract 类型的。
12.final修饰的成员变量初始化问题
类Field: 必须在静态初始块中或声明该FIeld时指定初始值。
实例Field:必须在非静态初始块中或声明该FIeld时指定初始值或构造器中声明。
13.Final 变量必须显式初始化,系统不会对final变量进行隐式初始化
14.java会使用常量池来管理曾经用过的字符串直接常量,例如:String a = “java”; ,系统把常量字符串“java”存在常量池,当再次执行 String b = “java”; a == b 是true
15.final 方法不可以重写,final类不能被继承
如果用private 方法 和 final private 是一样的。
若果是用final修饰的方法在子类中出现,那是子类新定义的,与父类没有关系。
16.不可变类:创建后该类的Field是不可改变的。
java提供了8个基本变量的包装类和string都是不可改变类。
17.线程的四种状态
1)新状态:线程已被创建但尚未执行(start() 尚未被调用)。
2)可执行状态:线程可以执行,虽然不一定正在执行。
CPU 时间随时可能被分配给该线程,从而使得它执行。
3)死亡状态:正常情况下 run() 返回使得线程死亡。
调用 stop()或 destroy() 亦有同样效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放锁。
4)阻塞状态:线程不会被分配 CPU 时间,无法执行。
18. static 和 abstract 不能同时修饰一个方法,没有类抽象方法
19.一个类可以又一个父类,实现多个接口,接口中Filed是public 、static、final的,方法是public abstract的
20.非静态内部类的方法访问某个变量,搜索顺序为:先内部类中方法内->内部类 ->外部类中如果都找不到则出现编译错误
21.非静态内部类不能有静态方法、静态Field、静态初始化块
22.在外部类之外访问内部类
访问非静态内部类:outclass.Inclass varname = new outclass().new InClass();
访问静态内部类: outclass.Inclass varname = new outclass.Inclass();
篇3:java面试知识点总结
java面试知识点总结
1. Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么?
byte——1 byte——Byte
short——2 bytes——Short
int——4 bytes——Integer
long——8 bytes——Long
float——4 bytes——Float
double——8 bytes——Double
char——2 bytes——Character
boolean
boolean数据类型非true即false。
这个数据类型表示1 bit,但是它的大小并没有精确定义。
《Java虚拟机规范》中如是说:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型单独使用是4个字节,在数组中又是1个字节。
那虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗?
实际上,使用int的原因是,对于当下32位的CPU来说,一次进行32位的数据交换更加高效。
综上,我们可以知道:官方文档对boolean类型没有给出精确的定义,《Java虚拟机规范》给出了“单独时使用4个字节,boolean数组时1个字节”的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是一种时空权衡。 boolean类型的封装类是Boolean。
2. 谈一谈”==“与”equals“的区别。
《Think in Java》中说:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。 ”==“判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals是Object类的方法,Object对它的实现是比较内存地址,我们可以重写这个方法来自定义“相等”这个概念。比如类库中的String、Date等类就对这个方法进行了重写。 综上,对于枚举类型和原始数据类型的相等性比较,应该使用”==“;对于引用类型的相等性比较,应该使用equals方法。
3. Java中的四种引用及其应用场景是什么?
强引用: 通常我们使用new操作符创建一个对象时所返回的引用即为强引用
软引用: 若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap
弱引用: 若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收
虚引用: 虚引用是Java中最“弱”的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。
4. object中定义了哪些方法?
clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()
5. hashCode的作用是什么?
请参见 散列表的基本原理与实现
6. ArrayList, LinkedList, Vector的区别是什么?
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小
LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问
Vector: 可以看作线程安全版的ArrayList
7. String, StringBuilder, StringBuffer的区别是什么?
String: 不可变的字符序列,若要向其中添加新字符需要创建一个新的String对象
StringBuilder: 可变字符序列,支持向其中添加新字符(无需创建新对象)
StringBuffer: 可以看作线程安全版的StringBuilder
8. Map, Set, List, Queue、Stack的特点及用法。
Map: Java中存储键值对的数据类型都实现了这个接口,表示“映射表”。支持的两个核心操作是get(Object key)以及put(K key, V value),分别用来获取键对应的值以及向映射表中插入键值对。
Set: 实现了这个接口的集合类型中不允许存在重复的元素,代表数学意义上的“集合”。它所支持的核心操作有add(E e), remove(Object o), contains(Object o),分别用于添加元素,删除元素以及判断给定元素是否存在于集中。
List: Java中集合框架中的列表类型都实现了这个接口,表示一种有序序列。支持get(int index), add(E e)等操作。
Queue: Java集合框架中的队列接口,代表了“先进先出”队列。支持add(E element),remove()等操作。
Stack: Java集合框架中表示堆栈的数据类型,堆栈是一种“后进先出”的数据结构。支持push(E item), pop()等操作。
更详细的说明请参考官方文档,对相关数据结构不太熟悉的同学可以参考《算法导论》或其他相关书籍。
9. HashMap和HashTable的区别
HashTable是线程安全的,而HashMap不是
HashMap中允许存在null键和null值,而HashTable中不允许
10. HashMap的实现原理
简单的说,HashMap的底层实现是“基于拉链法的散列表”。
详细分析请参考 深入解析HashMap、HashTable
11. ConcurrentHashMap的实现原理
ConcurrentHashMap是支持并发读写的HashMap,它的特点是读取数据时无需加锁,写数据时可以保证加锁粒度尽可能的小。由于其内部采用“分段存储”,只需对要进行写操作的数据所在的“段”进行加锁。关于ConcurrentHashMap底层实现的详细分析请参考 Java并发编程:并发容器之ConcurrentHashMap
12. TreeMap, LinkedHashMap, HashMap的区别是什么?
HashMap的底层实现是散列表,因此它内部存储的元素是无序的;
TreeMap的底层实现是红黑树,所以它内部的元素的有序的。排序的'依据是自然序或者是创建TreeMap时所提供的比较器(Comparator)对象。
LinkedHashMap可以看作能够记住插入元素的顺序的HashMap。
13. Collection与Collections的区别是什么?
Collection是Java集合框架中的基本接口;
Collections是Java集合框架提供的一个工具类,其中包含了大量用于操作或返回集合的静态方法。
14. 对于“try-catch-finally”,若try语句块中包含“return”语句,finally语句块会执行吗?
会执行。只有两种情况finally块中的语句不会被执行:**
调用了System.exit()方法;
JVM“崩溃”了。
15. Java中的异常层次结构
Java中的异常层次结构如下图所示:
我们可以看到Throwable类是异常层级中的基类。
Error类表示内部错误,这类错误使我们无法控制的;Exception表示异常,RuntimeException及其子类属于未检查异常,这类异常包括ArrayIndexOutOfBoundsException、NullPointerException等,我们应该通过条件判断等方式语句避免未检查异常的发生。IOException及其子类属于已检查异常,编译器会检查我们是否为所有可能抛出的已检查异常提供了异常处理器,若没有则会报错。对于未检查异常,我们无需捕获(当然Java也允许我们捕获,但我们应该做的事避免未检查异常的发生)。
16. Java面向对象的三个特征与含义
三大特征:封装、继承、多态。详细介绍请戳 Java面向对象三大特性
17. Override, Overload的含义与区别
Override表示“重写”,是子类对父类中同一方法的重新定义
Overload表示“重载”,也就是定义一个与已定义方法名称相同但签名不同的新方法**
18. 接口与抽象类的区别
接口是一种约定,实现接口的类要遵循这个约定;
抽象类本质上是一个类,使用抽象类的代价要比接口大。
接口与抽象类的对比如下:
抽象类中可以包含属性,方法(包含抽象方法与有着具体实现的方法),常量;接口只能包含常量和方法声明。
抽象类中的方法和成员变量可以定义可见性(比如public、private等);而接口中的方法只能为public(缺省为public)。
一个子类只能有一个父类(具体类或抽象类);而一个接口可以继承一个多个接口,一个类也可以实现多个接口。
子类中实现父类中的抽象方法时,可见性可以大于等于父类中的;而接口实现类中的接口 方法的可见性只能与接口中相同(public)。
19. 静态内部类与非静态内部类的区别
静态内部类不会持有外围类的引用,而非静态内部类会隐式持有外围类的一个引用。
20. Java中多态的实现原理
所谓多态,指的就是父类引用指向子类对象,调用方法时会调用子类的实现而不是父类的实现。多态的实现的关键在于“动态绑定”。详细介绍请戳 Java动态绑定的内部实现机制
21. 简述Java中创建新线程的两种方法
继承Thread类(假设子类为MyThread),并重写run()方法,然后new一个MyThread对象并对其调用start()即可启动新线程。
实现Runnable接口(假设实现类为MyRunnable),而后将MyRunnable对象作为参数传入Thread构造器,在得到的Thread对象上调用start()方法即可。
22. 简述Java中进行线程同步的方法
volatile: Java Memory Model保证了对同一个volatile变量的写happens before对它的读;
synchronized: 可以来对一个代码块或是对一个方法上锁,被“锁住”的地方称为临界区,进入临界区的线程会获取对象的monitor,这样其他尝试进入临界区的线程会因无法获取monitor而被阻塞。由于等待另一个线程释放monitor而被阻塞的线程无法被中断。
ReentrantLock: 尝试获取锁的线程可以被中断并可以设置超时参数。
篇4:java集合知识点总结
java集合知识点总结
Set:不区分元素的顺序,不允许出现重复的值
list:区分元素的顺序,且允许出现重复的值
map:采用key——values的,不允许有重复的键,每个键最多对应一个值
java集合只能保存引用类型的数据,是对象的引用
Collection接口描述set和list集合类型的根接口
相关方法:
add()如果增加重复元素,则增加失败,返回false
contains()判断是否包含有某个元素
iterator()返回成一个迭代器
List可以对元素的插入位置进行精确控制,根据元素索引访问元素等功能
set(index,elemetn)修改指定索引下的元素
Map关系集的形式查看某个映射的内容
put(objectkey,objectvalues)增加一个新的值
get(objectkey)查找key上面的值
SetkeySet()将所有的key返回到一个set中
Collectionvalues()将所有的值返回到一个collection集合中
Collection——set——hashset/treeset
Collection--list——Arraylist/vector——Stack(栈)
Map——hashmap/Treemap/hashtable——properties
StringTokenizer——Enumeration(不是很常用)
ArrayList类实现了list接口,用于表述长度可度的数组列表
他允许取值为null,除实现了list接口的所有功能外,还有以下方法
ArrayList()创建一个容量为10的null的列表
ArrayList()创建一个指定长度的null的列表
ensureCapacity(intminCapacity)增加此ArrayList实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。
trimToSize()将此ArrayList实例的容量调整为列表的当前大小(也就是说,出除后面为null的值)
相关实例请查看:hi.bccn.net/space-447825-do-blog-id-16964.html
Vector也实现了list接口,其描述的也是可变长度的对象数组
是同步(线程安全的),运行效率要低一些,主要用于多线程环境中,而arryalist是不同步的,适合在单纯种环境中使用
vector()创建一个长度为10的vector容器
elementAt(intindex)得到指定的值
addElement(Objectojb)增加值
removeElementAt(intindex)移除指定的值
insertElecentAt(Eobj,index)在指定位置查入相关的值
removeElement(objectobj)删除值,如果有重复的只删除第一次出现的
Object[]toArray()将当前集合中的元素全部返回到一个数组中
相关实例请查看:hi.bccn.net/space-447825-do-blog-id-16965.html
Stack继承了vector,对应了数据结构中的“后进先出”存储和操作数据结象栈
Stack()创建一个空的栈
push()在当前栈中压入一个数据,把项压入堆栈顶部。
pop()移除堆栈顶部的对象,并作为此函数的值返回该对象。
peek()查看堆栈顶部的对象,但不从堆栈中移除它。
clear()清空栈
search(objecto)查看栈中的位置,返回最进的一个。以1为基数
相关实例请查看:hi.bccn.net/space-447825-do-blog-id-16966.html
Iterator接口描述的是以统一方式对各种集合元素遍历/迭代工具,也称”迭代器“
允许在遍历过程中移除集合中的元素
hasNext()如果仍有元素可以迭代,则返回true
next()返回迭代的下一个元素
remove()从迭代器指向的collection中移除迭代器返回的最后一个元素
相关实例请查看:hi.bccn.net/space-447825-do-blog-id-16967.html
HashSet类实现了set接口,描述典型的set集合结构
不允许出现重复元素,不保证集合中元素的序
允许包含值为null的元素,但最多只能有一个,
相关实例请查看hi.bccn.net/space-447825-do-blog-id-16968.html
TreeSet类也实现了Set,它描述的是set的一种变体——可以实现排序功能的集合
将对象元素添加到TreeSet集中时会自动按照某种比较规则将其插入到有序的对象序列中
以保证TreeSet集合元素组成的对象序列时刻按照“升序”排列
相关实例请看:hi.bccn.net/space-447825-do-blog-id-16969.html
Comparable接口中定义的compareTo()方法,实现对整体排序所需的比较逻辑
排序称为自然排序,和自然比较
如果重写了,compareTo()那么要保证equals()保持一致
相关实例请查看:hi.bccn.net/space-447825-do-blog-id-16971.html
HashMap实现了Map接口,基于哈希表的实现了前述的映射集合结构
不保证其中元素的先后顺序,并且允许null值和null键
当集合中不存在当前检索的,get()返回的是空,而不会报错
影响hashMap性能的两个参数:初始容量和加载因子
相关实例请看:hi.bccn.net/space-447825-do-blog-id-16972.html
Hashtable也是采用键和值,键和值不允许为null,是同步的,即线程安全的,效率相对要低一些,用于多线程,用法与hashmap完全一样
Enumeration接口:作用与iterator接口类似,但只提供遍历vector和hashtable(及子类properties)且不支持集合元素的移除操作些接口不是很常用,这里就不给实例了
Collections定义了多种集合操作的方法,实现对集合元素排序,取极值,批是拷贝,集合结构转换,循环移位以及匹配检查等功能
相关方法:
sort(List
reverse(Listlist)反转指定列表中元素的顺序。
shuffle(Listlist)使用默认随机源对指定列表进行置换。
copy(Listdest,Listsrc)将所有元素从一个列表复制到另一个列表。
list(Enumeration
frequency(Collectionc,Objecto)返回指定collection中等于指定对象的元素数
max(Collectioncoll)根据指定比较器产生的顺序,返回给定collection的最大元素
rotate(Listlist,intdistance)根据指定的距离轮换指定列表中的元素。
相关实例请查看:hi.bccn.net/space-447825-do-blog-id-16973.html
Arrays类定义了多种数组操作方法,实现了对数组元素排序,填充,转换为列表或字符串形式、增强的检索和深度比较等功能
asList()返回一个受指定数组支持的固定大小的列表
sort()对指定的byte型数组按数字升序进行排序
binarySearch(int[]a,intkey)使用二分搜索法来搜索指定的int型数组,以获得指定的值。
toString(Object[]a)返回指定数组内容的字符串表示形式。
篇5:java基础知识点总结
java基础知识点总结
java概述:
1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;
1994年将Oak语言更名为Java;
Java的三种技术架构:
JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk in目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1):永久配置方式:JAVA_HOME=%安装路径%Javajdk
path=%JAVA_HOME% in
2):临时配置方式:set path=%path%;C:Program FilesJavajdk in
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:;e:
2):临时配置方式:set classpath=.;c:;e:
注意:在定义classpath环境变量时,需要注意的情况
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
还会在当前目录找吗?两种情况:
1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
4,javac命令和java命令做什么事情呢?
要知道java是分两部分的:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
java语法基础:
1,关键字:其实就是某种语言赋予了特殊含义的单词。
保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。
2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、$、_ ;
注意:
1),数字不可以开头。
2),不可以使用关键字。
3,常量:是在程序中的不会变化的数据。
4,变量:其实就是内存中的一个存储空间,用于存储常量数据。
作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。
特点:变量空间可以重复使用。
什么时候定义变量?只要是数据不确定的时候,就定义变量。
变量空间的开辟需要什么要素呢?
1,这个空间要存储什么数据?数据类型。
2,这个空间叫什么名字啊?变量名称。
3,这个空间的第一次的数据是什么? 变量的初始化值。
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
数据类型:
1):基本数据类型:byte、short、int、long、float、double、char、boolean
2):引用数据类型: 数组、类、接口。
级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double
自动类型转换:从低级别到高级别,系统自动转的;
强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;
运算符号:
1)、算术运算符。
+ - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
+:连接符。
++,--
2)、赋值运算符。
= += -= *= /= %=
3)、比较运算符。
特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
4)、逻辑运算符。
& | ^ ! && ||
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
& | ^
<< >>>>>(无符号右移)
练习:对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;
a = a + b; a = 8;
b = a - b; b = 3;
a = a - b; a = 5;
a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//a = a ^ b ^ a = b;
练习:高效的算出 2*8 = 2<<3;
5,语句。
If switch do while while for
这些语句什么时候用?
1)、当判断固定个数的值的时候,可以使用if,也可以使用switch。
但是建议使用switch,效率相对较高。
switch(变量){
case 值:要执行的语句;break;
…
default:要执行的语句;
}
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了
就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止;
2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的'value是否匹配,程序会从default开始执行直到第一个break出现。
2)、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
3)、当某些语句需要执行很多次时,就用循环结构。
while和for可以进行互换。
区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
break:作用于switch ,和循环语句,用于跳出,或者称为结束。
break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
6,函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数。函数就是体现之一。
java中的函数的定义格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){
执行语句;
return 返回值;
}
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
如何定义一个函数?
函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
1)、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。
2)、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。
函数的作用:
1)、用于定义功能。
2)、用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
主函数:
1)、保证该类的独立运行。
2)、因为它是程序的入口。
3)、因为它在被jvm调用。
函数定义名称是为什么呢?
答:1)、为了对该功能进行标示,方便于调用。
2)、为了通过名称就可以明确函数的功能,为了增加代码的阅读性。
重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。
如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。
7,数 组:用于存储同一类型数据的一个容器。好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
如何在java中表现一个数组呢?两种表现形式。
1)、元素类型[] 变量名 = new 元素类型[元素的个数];
2)、元素类型[] 变量名 = {元素1,元素2...};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};
篇6:java框架知识点总结
java框架知识点总结
1 对象的初始化
(1) 非静态对象的初始化在创建对象时,对象所在类的所有数据成员会首先进行初始化。基本类型:int型,初始化为0。如果为对象:这些对象会按顺序初始化。※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。构造方法的作用就是初始化。(2) 静态对象的初始化程序中主类的静态变量会在main方法执行前初始化。不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。
2 继承时,对象的初始化过程
(1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。(2) 主类静态成员的初始化。(3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造方法前,先进行对此超类进行非静态对象的初始化。(4) 主类非静态成员的初始化。(5) 调用主类的构造方法。
3关于构造方法
(1) 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的'构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。(2) 在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是第一条语句。
4 有关public、private和protected
(1) 无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文件中,b.两个类在同一文件夹中,c.两个类在同一软件包中。(2) protected:继承类和同一软件包的类可访问。(3) 如果构造方法为private,那么在其他类中不能创建该类的对象。
5 抽象类
(1) 抽象类不能创建对象。(2) 如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类。(3) 继承抽象类的类在类中必须实现抽象类中的抽象方法。(4) 抽象类中可以有抽象方法,也可有非抽象方法。抽象方法不能为private。(5) 间接继承抽象类的类可以不给出抽象方法的定义。
6 final关键字
(1) 一个对象是常量,不代表不能转变对象的成员,仍可以其成员进行操作。(2) 常量在使用前必须赋值,但除了在声明的同时初始化外,就只能在构造方法中初始化。(3) final修饰的方法不能被重置(在子类中不能出现同名方法)。
(4) 如果声明一个类为final,则所有的方法均为final,无论其是否被final修饰,但数据成员可为final也可不是。
7 接口interface (用implements来实现接口)
(1) 接口中的所有数据均为 static和final即静态常量。尽管可以不用这两个关键字修饰,但必须给常量赋初值。(2) 接口中的方法均为public,在实现接口类中,实现方法必须可public关键字。(3) 如果使用public来修饰接口,则接口必须与文件名相同。
8 多重继承
(1) 一个类继承了一个类和接口,那么必须将类写在前面,接口写在后面,接口之间用逗号分隔。(2) 接口之间可多重继承,注意使用关键字extends。(3) 一个类虽只实现了一个接口,但不仅要实现这个接口的所有方法,还要实现这个接口继承的接口的方法,接口中的所有方法均须在类中实现。
9 接口的嵌入
(1) 接口嵌入类中,可以使用private修饰。此时,接口只能在所在的类中实现,其他类不能访问。(2) 嵌入接口中的接口一定要为public。
10 类的嵌入
(1) 类可以嵌入另一个类中,但不能嵌入接口中。(2) 在静态方法或其他方法中,不能直接创建内部类对象,需通过手段来取得。手段有两种:class A {class B {}B getB {B b = new B();return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 或者是 A.B ab = a.new B(); }(3) 一个类继承了另一个类的内部类,因为超类是内部类,而内部类的构造方法不能自动被调用,这样就需要在子类的构造方法中明确的调用超类的构造方法。 接上例: class C extends A.B { C() { new A().super(); // 这一句就实现了对内部类构造方法的调用。 } } 构造方法也可这样写: C(A a) { a.super(); } // 使用这个构造方法创建对象,要写成C c = new C(a); a是A的对象。
11 异常类
JAVA中除了RunTimeException 类,其他异常均须捕获或抛出。
篇7:Java知识点总结
Java知识点总结
一:java概述:
1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;
1994年将Oak语言更名为Java;
Java的三种技术架构:
JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:\;e:\
2):临时配置方式:set classpath=.;c:\;e:\
注意:在定义classpath环境变量时,需要注意的情况
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
还会在当前目录找吗?两种情况:
1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
4,javac命令和java命令做什么事情呢?
要知道java是分两部分的:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
二:java语法基础:
1,关键字:其实就是某种语言赋予了特殊含义的单词。
保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。
2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、$、_ ;
注意:
1),数字不可以开头。
2),不可以使用关键字。
3,常量:是在程序中的不会变化的数据。
4,变量:其实就是内存中的一个存储空间,用于存储常量数据。
作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。
特点:变量空间可以重复使用。
什么时候定义变量?只要是数据不确定的时候,就定义变量。
变量空间的开辟需要什么要素呢?
1,这个空间要存储什么数据?数据类型。
2,这个空间叫什么名字啊?变量名称。
3,这个空间的第一次的数据是什么? 变量的初始化值。
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
数据类型:
1):基本数据类型:byte、short、int、long、float、double、char、boolean
2):引用数据类型: 数组、类、接口。
级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double
自动类型转换:从低级别到高级别,系统自动转的;
强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;
运算符号:
1)、算术运算符。
+ - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
+:连接符。
++,--
2)、赋值运算符。
= += -= *= /= %=
3)、比较运算符。
特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
4)、逻辑运算符。
& | ^ ! && ||
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
& | ^
<< >>>>>(无符号右移)
练习:对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;
a = a + b; a = 8;
b = a - b; b = 3;
a = a - b; a = 5;
a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//a = a ^ b ^ a = b;
练习:高效的算出 2*8 = 2<<3;
5,语句。
If switch do while while for
这些语句什么时候用?
1)、当判断固定个数的值的时候,可以使用if,也可以使用switch。
但是建议使用switch,效率相对较高。
switch(变量){
case 值:要执行的语句;break;
…
default:要执行的语句;
}
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了
就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止;
2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
2)、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
3)、当某些语句需要执行很多次时,就用循环结构。
while和for可以进行互换。
区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
break:作用于switch ,和循环语句,用于跳出,或者称为结束。
break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
6,函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数。函数就是体现之一。
java中的函数的定义格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){
执行语句;
return 返回值;
}
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
如何定义一个函数?
函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
1)、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。
2)、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。
函数的作用:
1)、用于定义功能。
2)、用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
主函数:
篇8:Java基础知识点总结
Java基础知识点总结
1. JAVA简介
1.1 java体系结构:j2se,javaweb,j2ee
1.2 java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定)
1.3 JDK与JRE,JDK:java开发环境,JRE:java运行环境
1.4 第一个java程序:HelloWorld,java的入口是main(public static void main(String[] args))
1.5 java程序的开发步骤:.java 编译(javac)成.class 运行(java).class文件
2. 基本数据类型
2.1标志符:自己可以取名字的地方称为标志符
*标志符的规则:1,只能是字母,数字,下划线,$;不能以数字开头;严格区分大小写;不能使用关键字作为标志符
2.2关键字:关键字都是小写
2.3常量:如123,“hello”
*也可以使用final定义常量(请参照Math.PI),如public static final int SLOW_SPEED=1;
2.4 变量:变量的本质是内存中的一小块区域,用这个区域保存数据
*变量申明:类型变量名字
*变量必须先声明,再赋值,再使用
*注意区分基本数据类型的变量与引用数据类型的变量
*变量的作用域,局部变量与成员变量:变量在哪个大括号里定义,就在哪里有效,出了大括号无效
2.5 基本数据类型:java数据类型分为两大类:基本数据类型,引用数据类型
*基本数据类型分为4类8中:boolean,char,byte,short,int,long,float,double
*boolean类型只有true,false
*char是Unicode编码
*float,double是有精度的(不是绝对精确的)
2.6 基本数据类型之间的转换
*123字面常量是int型,12.3字面常量是double型,8888888888888这个字面常量有问题(因为它已经超出int的范围,改成8888888888888L)
*boolean与其他类型不兼容
*byte,short,char之间相互运算的时候,先转换为int,再进行运算
*小容量的数据类型可以自动转换为大容量的数据类型:byte,short,char——>int——>long——>float——>double
*大容量转换为小容量的数据类型,要进行强制转换
*多种数据类型进行运算的时候,先转换为容量最大的数据类型再进行运算,整个表达式的类型是容量最大的数据类型
*必须掌握PPT上的习题
3. 运算符与流程控制3.1运算符:算术,关系,赋值,逻辑(着重注意),位运算符
*自加自减++,--,注意顺序
*关系运算符的结果是boolean类型
*逻辑运算符注意短路与&&,短路或||
*三元运算符(逻辑表达式) ? 表达式一:表达式二
3.2流程控制语句:条件(if,switch),循环(for,while,do while),break与continue
3.3 switch的规则:
*switch只能探测:byte,short,char,int 类型的值(case后面也只能是这4种)
*switch中小心case的穿透(代码会一直运行,直到遇到break停止,建议每个case写一个break)
*default:如果没有找到匹配的case,则执行default
3.4 for,while,do while搞清楚代码的执行流程(PPT上有图,必须记住)
3.5 break,continue
*都可以用在循环里面,break还可以用在switch中
*break跳出单前的代码块(结束循环)
*continue:跳过本轮循环,继续下一轮循环(循环会继续,仅仅跳过本次)
3.6 流程控制代码编写:可以灵活的组合这些流程控制代码,注意一定要写{ }
4. 面向对象基本语法
需要大家掌握:类与对象的区别,如何定义一个类,如何实例化一个对象
篇9:Java基础知识点总结
4.1定义一个类
*使用class关键字定义类,注意类名大写
*成员属性:成员属性不赋值会有默认值(默认值规则参考PPT)
*成员方法
*构造方法:没有任何返回值,名字与类名一样,构造方法的本意是用来初始化对象(初始化对象的属性值)
4.2 实例化对象:Student s = new Student;
*使用new + 构造方法实例化对象
*new 在堆中开辟了对象的空间,并且给属性赋上默认值
*接下来调用构造方法,执行构造方法中的代码
*最后返回对象的引用
4.3区分引用类型与基本数据类型
*引用类型的变量在内存中有两块区域,一块是引用本身,另一块是引用所指向的对象
*基本数据类型在内存中只有一块空间:里面存着值
4.4如何操作对象:使用.操作符
*使用对象名.属性操作对象的属性(如:stu.age = 18;)
*使用对象名.方法调用对象的方法(如:stu.study());
*this:每个对象都有this,this是指向本身的引用,代表本身
4.5. 必须能够独立写出Point3D的代码(题目在PPT上)
5. 访问控制,方法定义与调用,重载,方法重写5.1 访问控制5.1.1 package包的使用
*使用package 定义包:package只能放在代码的第一行
*import:导包,可以到入包下所有import java.io.*;可以导入具体的一个类import java.io.Reader;
*包的作用:1,分类;2,隐藏(封装的作用),3,便于管理
*java本身提供了一些包:java.lang(核心类,此包如需要引入),java.util(集合框架以及其他常用类),java.io(输入输出),java.awt,javax.swing(图形)
5.1.2 继承(简单概念):使用extends关键字表示继承
*子类继承父类的所有属性
*子类继承父类除private(非同包的时候也除默认的方法)外的所有方法
*子类对象拥有super引用,表示父类的引用,可以使用super明确的调用父类的方法或属性
5.1.3四个访问级别,从大到小:public ,protected,默认,private
*注意访问级别是针对类来讲的,不是针对对象!!!!!!!
*注意类的访问修饰符只能使用public 或默认
*学了访问控制后:类的属性都写private,通过set/get方法对属性进行赋值,取值
5.2 重载与重写
1.判断是否是重载,或者是否是重写,如果不是重写或者重载,就不受重写重载规则的约束
5.2.1重载:一个类当中,有方法名相同,参数不同的方法,称为重载
*不能只改返回值:不能根据方法的返回进行重载
5.2.2重写:在继承当中,子类将父类的方法重新写了一遍:重写的方法与被重写的方法拥有相同的方法签名(返回值类型,方法名,参数列数)
*.重写的方法能够改变被重写的方法的访问级别,注意只能是相等或者扩大
*.重写的方法不能抛出比被重写方法更多的异常,注意只能缩小异常的范围
*.如果被重写的方法是具体的,重写之后不能改为abstract
5.3 类与对象的生命周期
5.3.1类与对象的初始化过程:
*静态属性先初始化,而且仅仅初始化一次
*首先给静态属性进行声明,并赋默认值,然后代码从上往下执行静态代码块或静态赋值
*每创建一个对象,就先实例化成员属性:首先给成员属性声明,赋默认值,然后.执行赋值语句
*成员属性初始化后再调用构造方法
5.3.2垃圾回收机制
*java虚拟使用垃圾回收机制进行垃圾回收
*垃圾回收本身是一个线程(当内存不够用的时候,一般会进行垃圾回收)
*垃圾回收不能通过程序来调用,仅仅能够通过System.gc()建议虚拟机进行垃圾回收
*当进行垃圾回收时,会调用对象的finalize方法
5.4 单例模式:一个类仅仅能有一个实例(设计模式的一种)
*构造方法必须为私有的
*提供静态的方法来获得对象
*提供静态的属性,该属性是该类的一个对象
6. 继承,抽象类,接口
6.1 继承:
6.1.1 继承的语法:使用extends关键字表示继承
*子类继承父类所有的属性
*私有方法不能被继承
*super关键字表示父类的引用,可以用super来调用父类的方法或属性
6.2.2 继承中的构造方法:了解下面的知识点以及实例化对象时代码的执行过程
*子类的构造过程必须调用其基类的构造方法
*子类可以在自己的构造过程中使用super (arg_list)来调用基类的构造方法
*如果调用super,必须写在子类构造方法的第一行
*可以使用this(argument_list)调用本类的另外的构造方法
*如果子类的构造方法中没有显示的调用基类的构造方法,系统默认调用基类无参数的构造方法
*如果子类构造方法中既没有显式的调用基类构造方法,基类中又没有无参数的构造方法,编译出错
6.3.3 对象的转型
*一个基类的引用类型变量可以指向其子类的对象
*一个基类的引用不可以访问其子类对象新增的成员
*可以使用instanceof 关键字来判断一个引用类型变量所指向的对象是否是制定的类型
*子类的对象可以当作基类的对象来使用称作向上转型,反之称为向下转型
*子类可以当成父类来使用,无需显示转换
*父类引用转换为子类引用要进行强制转换
*注意:不兼容的类型之间不能进行相互转换(只有具有直接或间接父子关系的类才是兼容的类型),否则编译时会报错
*注意:兼容类型之间的转换要看对象的实际类型,因此向下转化时最好先用instanceof来判断是否是某个类型,在转换,以免报报错
6.4.4 多态:也称运行时绑定:一般是指父类的引用指向子类对象,通过父类的引用调用被子类重写的方法,这个时候执行的是子类的方法
*一句话总结多态:对象实际是什么类型就调用什么类型的方法
*多态成立的条件:1,要有继承。2,要有重写。3,必须有父类引用指向子类对象。
6.2 抽象类:用abstract修饰的类称为抽象类(抽象的本意是不具体)
1.抽象方法不能有方法体
2.抽象类不能被实例化。
3.含有抽象方法的类必须被声明为抽象类,
4.子类继承抽象类,必须被重写父类的抽象方法,否则本身也必须被声明为抽象类
5.抽象类中的方法和属性没有其他规则来约束,抽象类中没有抽象的方法是可以的,抽象类中可以有非抽象的方法和属性
6.3 static :静态关键字
6.3.1static属性:在类中,用static申明的成员变量叫静态变量,他为该类的公用变量,在第一使用时被初始化,对于该类的所有对象来说,static成员变量只有一份
6.3.2 static方法:用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以static方法中不可以访问非static的成员。
*静态方法中不能访问非静态成员
*静态成员方法没有this引用
*可以通过类名(不需要实例化)或对象引用来访问静态成员
6.4 final关键字:
final表示最终的意思
*final的变量的值不能够被改变
*final的成员变量
*final的局部变量(形参)
*final的方法不能够被重写
*final的类不能够被继承
6.5 接口:interface
1. 使用interface定义一个接口,使用implements实现一个接口
2. 接口中的属性只能为public static final类型(静态常量)
3. 接口中的方法只能为public abstract类型
4. 一个类可以实现多个接口,但只能继承一个类
5. 接口也可以继承接口
7. 异常处理
java的异常处理机制
异常的关键字Exception
try,catch,finally,throw,throws关键字
7.1什么是异常,为什么要引入异常
*java程序运行时出错,java就抛出异常,程序立即终止(也可以说程序崩溃)
*java将错误信息封装在异常对象里抛出
*学会查看异常的信息:异常的名字,异常的信息,程序抛异常的位置
*java引入异常处理机制,是防止程序出错崩溃
7.2java的异常的分类
*java的抛出的错误用异常类来表示,java拥有一个异常体系(有许多异常类,并且相互之间具有关系)
*java里面的所有异常都是Throwable的子类
*java虚拟机的异常是Error的子类,一般不需进行处理(因为没法进行处理)
*除Error之外还有Exception,Exception分为两类:RuntimeException(运行时异常),被检查异常(除了RuntimeException都是被检查异常)
*RuntimeException(运行时异常,可以不捕获或声明抛出,编译不会报错,一般是控制不当造成的),可检查异常(必须捕获或声明抛出,这类异常通常需要检测并处理,一般使用资源时造成的)
*几个常见的异常:NullPointerException(空指针),IndexOutOfBoundsException(索引越界),SQLException(数据库异常),IOException(文件异常)
7.3异常的处理方式
*使用try,catch,finally进行处理
*不处理,使用throws,throw交给别人来处理
7.4try,catch,finally中程序的运行过程
*尝试执行try里面的语句
*一次运行当中最多执行一个catch块,如果没有抛出异常,catch块不执行
*finally总会执行,不管有没有抛出异常
*如果try块里面有return语句,finally也会执行
7.5区分RuntimeException与被检查异常
*RuntimeException不需要捕获或声明抛出(但是如果你捕获或声明抛出也不会有错)
*被检查异常必须要捕获或者声明抛出
篇10:java总结
一、数组、集合
数组、集合:都是一种容器,用一个对象管理多个对象;
数组:不能自动增长;只能存放同类型的元素
集合:能自动扩容;部分集合允许存放不同类型的元素;
二、学习这些集合类要掌握哪些东西:
1)怎样得到(选择)集合对象;
2)怎样添加元素
3)怎样删除元素
4)怎样循环遍历没一个元素
三、list、set、map
collection:父接口;
Set:接口---一个实现类:HashSet
List:接口---三个实现类:LinkedList,Vector,ArrayList
SortedSet:接口---实现类:TreeSet
1、List:
List:有序列表,允许存放重复的元素;
实现类:
ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;下标也是从0开始;
LinkedList:链表实现,增删快,查询慢
Vector:数组实现,线程安全,重量级
2.Set:
无序集合,不允许存放重复的元素;
实现类HashSet:equals返回true,hashCode返回相同的整数;哈希表;
子接口SortedSet:对Set排序实现类:TreeSet:二叉树实现的;
看API:泛型:表示一个对象;
Iterator:接口,迭代器;
java.util;
hasNext();
next();
remove();
Iterable:可迭代的,访问的;
ng;实现了可迭代的接口就可以用迭代的方式访问;
只需实现iterator();方法即可;Iteratoriterator();
三种循环的访问方式:
只有实现了Iterable接口的才能用第三种;能用第二种的也一定能用第三种;
ArrayList:自动扩容,是数组照搬过来的;
3.Map
HashMap:键值对,key不能重复,但是value可以重复;key的实现就是HashSet;value对应着放;
HashSet的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只提供key的访问;
如果有两个Key重复,那么会覆盖之前的;
Hashtable:线程安全的
Properties:java.util.Properties;key和value都是String类型,用来读配置文件;
HashMap与Hashtable区别:
HashMap线程不安全的,允许null作为key或value;
Hashtable线程安全的,不允许null作为key或value;
TreeMap:对key排好序的Map;key就是TreeSet,value对应每个key;
key要实现Comparable接口或TreeMap有自己的构造器;
HashSet:remove(Objecto)的原则看这个对象O的Hashcode和equals是否相等,并不是看是不是一个对象;
定义一个Map;key是课程名称,value是Integer表示选课人数;
map.put(cou,map.get(cou)+newInteger(1));
四、Hashtable、Properties
1,Hashtable:实现了Map接口,此类实现一个哈希表,作用和HashMap相同。任何非null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的.对象必须实现hashCode方法和equals法。
2,Properties:继承自Hashtable,比Hashtable更严格属性列表中每个键及其对应值都是一个字符串。
常用方法StringgetProperty(String?key)和setProperty(Stringkey,Stringvalue);
用法:我在C盘下建了一个名为yy.dat的文件,文件的内容为:
name=hehe
password=12345
执行以下程序,输出hehe,可见用Properties可以很方便的解析配置文件
Propertiesp=newProperties();
p.load(newFileInputStream(”C:yy.dat“));
System.out.println(p.getProperty(”name“))
五、两个工具类Arrays和Collections
1.Arrays、此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂
2.Collections、主要提供了在collection上进行操作的静态方法
六、遗留的几个类
1.Hashtable,作用和HashMap相同,不过它是线程安全的,如果不需要线程安全,应该使用HashMap
2.Enumeration,遗留集合使用枚举接口来遍历元素,它有两个方法,hasMoreElements和nextElement,用法类似Iterator。
3.Stack,继承自Vector,实现了栈的功能,提供了push()方法押栈和pop()方法出栈。
4.BitSet,位集。如果需要高效率的存储一个位序列,例如一个标志序列,请使用位集。它可以对各个位进行
读取get(i)
设置set(i)
清楚clear(i)
七、常见笔试题目汇总
1.Collection和Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
2.List,Set,Map是否继承自Collection接口?
List,Set是,Map不是
3.两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?
不对,有相同的hashcode。
4.你所知道的集合类都有哪些?主要方法?
最常用的集合类是List和Map。List的具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。
Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作”键“和”值“),其中每个键映射到一个值。
5.排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
//使用快速排序方法对a[0:n-1]排序
从a[0:n-1]中选择一个元素作为middle,该元素为支点
把余下的元素分割为两段left和right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点
递归地使用快速排序方法对left进行排序
递归地使用快速排序方法对right进行排序
所得结果为left+middle+right
6.HashMap和Hashtable的区别
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap类没有分类或者排序。它允许一个null键和多个null值。
Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。
7.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。
equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
篇11:java总结
java集合总结
java集合总结(一)
一、数组、集合
数组、集合:都是一种容器,用一个对象管理多个对象;
数组:不能自动增长;只能存放同类型的元素
集合:能自动扩容;部分集合允许存放不同类型的元素;
二、学习这些集合类要掌握哪些东西:
1)怎样得到(选择)集合对象;
2)怎样添加元素
3)怎样删除元素
4)怎样循环遍历没一个元素
三、list、set、map
collection:父接口;
Set:接口---一个实现类:HashSet
List:接口---三个实现类:LinkedList,Vector,ArrayList
SortedSet:接口---实现类:TreeSet
1、List:
List:有序列表,允许存放重复的元素;
实现类:
ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;下标也是从0开始;
LinkedList:链表实现,增删快,查询慢
Vector:数组实现,线程安全,重量级
2.Set:
无序集合,不允许存放重复的元素;
实现类HashSet:equals返回true,hashCode返回相同的整数;哈希表;
子接口SortedSet:对Set排序实现类:TreeSet:二叉树实现的;
看API:
Iterator:接口,迭代器;
java.util;
hasNext;
next();
remove();
Iterable:可迭代的,访问的;
ng;实现了可迭代的接口就可以用迭代的方式访问;
只需实现iterator();方法即可;Iteratoriterator();
三种循环的访问方式:
只有实现了Iterable接口的才能用第三种;能用第二种的也一定能用第三种;
ArrayList:自动扩容,是数组照搬过来的;
3.Map
HashMap:键值对,key不能重复,但是value可以重复;key的实现就是HashSet;value对应着放;
HashSet的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只提供key的访问;
如果有两个Key重复,那么会覆盖之前的;
Hashtable:线程安全的
Properties:java.util.Properties;key和value都是String类型,用来读配置文件;
HashMap与Hashtable区别:
HashMap线程不安全的,允许null作为key或value;
Hashtable线程安全的,不允许null作为key或value;
TreeMap:对key排好序的Map;key就是TreeSet,value对应每个key;
key要实现Comparable接口或TreeMap有自己的构造器;
HashSet:remove(Objecto)的原则看这个对象O的Hashcode和equals是否相等,并不是看是不是一个对象;
定义一个Map;key是课程名称,value是Integer表示选课人数;
map.put(cou,map.get(cou)+newInteger(1));
四、Hashtable、Properties
1,Hashtable:实现了Map接口,此类实现一个哈希表,作用和HashMap相同。任何非null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现hashCode方法和equals法。
2,Properties:继承自Hashtable,比Hashtable更严格属性列表中每个键及其对应值都是一个字符串。
常用方法StringgetProperty(String?key)和setProperty(Stringkey,Stringvalue);
用法:我在C盘下建了一个名为yy.dat的文件,文件的内容为:
name=hehe
password=12345
执行以下程序,输出hehe,可见用Properties可以很方便的解析配置文件
Propertiesp=newProperties();
p.load(newFileInputStream(”C:\\yy.dat“));
System.out.println(p.getProperty(”name“))
五、两个工具类Arrays和Collections
1.Arrays、此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂
2.Collections、主要提供了在collection上进行操作的静态方法
六、遗留的几个类
1.Hashtable,作用和HashMap相同,不过它是线程安全的,如果不需要线程安全,应该使用HashMap
2.Enumeration,遗留集合使用枚举接口来遍历元素,它有两个方法,hasMoreElements和nextElement,用法类似Iterator。
3.Stack,继承自Vector,实现了栈的功能,提供了push()方法押栈和pop()方法出栈。
4.BitSet,位集。如果需要高效率的存储一个位序列,例如一个标志序列,请使用位集。它可以对各个位进行
读取get(i)
设置set(i)
清楚clear(i)
七、常见笔试题目汇总
1.Collection和Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
2.List,Set,Map是否继承自Collection接口?
List,Set是,Map不是
3.两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?
不对,有相同的hashcode。
4.你所知道的集合类都有哪些?主要方法?
最常用的集合类是List和Map。List的.具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。
Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作”键“和”值"),其中每个键映射到一个值。
5.排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
//使用快速排序方法对a[0:n-1]排序
从a[0:n-1]中选择一个元素作为middle,该元素为支点
把余下的元素分割为两段left和right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点
递归地使用快速排序方法对left进行排序
递归地使用快速排序方法对right进行排序
所得结果为left+middle+right
6.HashMap和Hashtable的区别
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap类没有分类或者排序。它允许一个null键和多个null值。
Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。
7.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。
equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
java集合总结(二)
java集合类主要负责保存、盛装其他数据,因此集合类也称容器类。java集合类分为:set、list、map、queue四大体系。其中set代表无序、不可重复的集合;list代表有序、可重复的集合。map代表具有映射关系的集合;queue代表队列集合。
java集合类主要由两个接口派生:Collection和Map,是集合框架的根接口。下面是其接口、子接口和实现类的继承树。
下面就一一介绍四大接口及其实现类。
Set接口。set集合不允许包含相同的元素。set判断两个对象是否相同是根据equals方法。如果两个对象用equals方法返回的是true,set不会接受这两个对象。
HashSet是set接口的典型实现,HashSet按hash算法来存储集合中的元素。因此具有很好的存储和查找性能。HashSet判断两个元素的标准是两个元素的equals方法比较相等,同时两个对象的hasCode()方法返回值也相等。HashSet可以保存null元素。
List集合代表一个有序集合。集合中的每个元素都有其对应的顺序索引。Arraylist和vector是list接口的两个典型实现。他们之间的显着区别就是:vector是线性安全的,而arraylist不是。它们两个都是基于数组实现的list类。List还有一个基于链表实现的LinkedList类。当插入、删除元素的速度非常快。这个类比较特殊,功能也特别多,即实现了List接口,也实现了Dueue接口(双向队列)。可以当成双向队列使用,也可以当成栈使用。
Queue用于模拟队列的数据结构。LinkedList和ArrayDueue是其两个比较常用的实现类。
Map用于保存具有映射关系的数据。Map接口有如下几个常用的实现类:HashMap、HashTable、TreeMap。TreeMap是基于红黑树对TreeMap中所有key进行排序。HashMap和HashTable主要区别有两点:1、Hashtable是线性安全的,因此性能差些。2、HashMap可以使用null作为key或者value。
集合类还提供了一个工具类Collections。主要用于查找、替换、同步控制、设置不可变集合。
上面是对java集合类的一般概述,下面就set、list、map三者之间的关系进行剖析。
Set与Map的关系。Map集合中所有key集中起来,就组成了一个set集合。所以Map集合提供Set
Map与List的关系。把Map的key-value分开来看,从另一个角度看,就可以把Map与List统一起来。
Map集合是一个关联数组,key可以组成Set集合,Map中的value可以重复,所以这些value可以组成一个List集合。但是需要注意的是,实质Map的values方法并未返回一个List集合。而是返回一个不存储元素的Collection集合,换一种角度来看对List集合,它也包含了两组值,其中一组就是虚拟的int类型的索引,另一组就是list集合元素,从这个意思上看,List就相当于所有key都是int型的Map。
下面讲解几个相似类之间的差异。
ArrayList和LinkedList。ArrayList是一种顺序存储的线性表,其底层是采用数组实现的,而LinkedList是链式存储的线性表。其本质就是一个双向链表。对于随机存储比较频繁的元素操作应选用ArrayList,对于经常需要增加、删除元素应该选用LinkedList。但总的来说ArrayList的总体性能还是优于LinkedList。
HashSet与HashMap的性能选项。主要有两个方面:容量和负载因子(尺寸/容量)。较低负载因子会增加查询数据的性能,但是会降低hash表所占的内存开销。较高负载因子则反之,一般对数据的查询比较频繁,所以一般情况下初始容量应该大一点,但也不能太大,否则浪费内存空间。
篇12:java试用期总结
我来公司已经近两个月了,在这两个月中,我随着对公司的逐步了解,更加坚定了我进公司前面试时候“找个能够长期发展的公司”的想法,我对公司的前景充满希望;通过两个月与同事的接触,我对他们的技术水平很佩服,因而对物流软件的前景也充满信心。
在此期间,我认真积极的工作,并且在同事的积极主动而又诚恳的帮助下完成了领导给我分配的工作。
1、熟悉了物流软件的业务流程,在将来的工作中我将更加明细的知道各个业务的具体功能和实现方法,更好的为公司服务。
2、完成了计费部分的需求分析,概要设计、数据库设计
3、完成了机器登录(主要功能:搜索整个局域网,用比较高效的方法能够快速的获取每台电脑的主机名、IP地址、网卡物理地址MAC,并且把他们应用的系统登录wxlogin的校验中去)、商品信息(主要功能:商品信息查看、一次录入、二次录入、修改、匹配、维护、历史商品信息查看、商品信息匹配列设置)、静态数据维护(主要功能:基础数据查看、录入、维护、设计全局函数,方便在数据窗口中把基础数据作为下拉子数据窗口调用)、版本查询的新增开发;跟罗宇宙翔一起完成了系统日志(修改日志窗口、修改保存日志的全局函数(fxsxlogsxerr),从而把以前的6个类似函数统一起来,并且把这个函数应用到部分窗口)。使自己对物流业务、文档书写、ORACLE存储过程、图形化界面、动态菜单有了进一步的认识。虽然整个项目组的人都在努力工作,但是项目进度比预期的推迟了一段时间,现在时间紧迫,我会更加努力工作,希望能尽自己能力帮助物流组按时完成项目1、尽早完成领导交给我的工作,完成之后主动向领导要工作2、写好说明便于阅读维护、写好工作日志便于领导掌握我的工作进度3、抽空看同事的设计档和程序,一方面提高自己,另一方面向同事提供建议,从而增强整个系统的质量。请领导和同事考核我、关怀我、团结我、激励我,共同为高效、高质量完成这个项目而努力。
篇13:java试用期总结
作为一个软件开发工程师,我有幸成为北京超图一员,应聘为公司的java软件工程师。入任职以来,在部门领导的带领下,自己感觉无论学习、技术、生活等方面都有很大的提升。
20xx年里我主要完成的工作有:
1.1工程部pda运维系统
我是4月末来到公司的,来到公司的初期主要是对工程部pda运维系统进行了解,并对pda以后可能用到的一些技术进行研究,而后对现有的项目进行修改。系统包括3个主要功能模块,一个次要模块,主要模块有工单管理、消息管理和系统升级。
工单管理的修改
系统升级可下载单个的文件,可同过一个文件升级
pda上线之前主要在有线的5个站点做实施工作,第一次做实施,以为只是简单的教用户怎么用就可以了,但是真正做起来才知道,针对不同的用户需要用不同的角度去讲解,特别是年龄大的,要多讲几遍才行。
pda上线以后工作主要集中在pda的维护和修改上,由于距离上次实施时间较长,所以又进行了一次实施。每个站点使用的时间不同,花费在每个站点上的维护和实施时间较长,在实施和维护期间每个站点都提出了不同的问题,针对不同的问题修改了很长时间,其中修改最多的模块主要集中于工单管理模块和系统升级模块。
系统在所有站点都开始使用以后主要针对站点提出的不同的问题进行解决和系统的改进,经过改进的系统很稳定,问题基本出现在
由于信号不好的原因导致升级失败,由于卡停机导致系统不能正常登录。还有几次是因为网络原因导致系统不能使用
1.2有线boos系统
pda运维项目稳定后主要做了些boos系统中的一些功能,数据库数据的批量转移,
百万条数据的批量的转移功能。
宽带系统的的咨询查询,根据用户地址和时间进行查询,修改宽带大客户atm资料查询功能boos系统网上营业厅缴费的遗漏查询网上营业厅二期产品卡消费修改了付费频道发票打印功能全网稽查中主工单的打印。
工作展望:
1、将学习的springsecurity整合到我们自己搭建的ssh框架,进一步完善框架。
2、利用搭建的ssh框架,开发一套oa系统平台。
3、做好襄樊、鄂州家政网络服务中心的维护工作。
4、希望公司能够大量拿下湖北省其他市的家政网络服务中心,继续开发和实施湖北省其他市的家政网络服务中心。
5、继续学习新技术,努力提高自己的个人能力。为以后能够更好,更顺利的工作奠定基础。
6、希望通过自己的进步和努力,能为公司的发展做出自己最大的贡献,体现出自己的最大价值。
篇14:java试用期总结
一、考核期内主要业绩,工作创新、工作质量及成效:
1、xx.5.10 — xx.7:联通116114门户网站开发
完成116114网站首页登录及注册、公告模块、红段子短信发送、地区二级联动、及一些公共代码的实现,在这个项目中学习了新的知识freemarker及ibatis,熟悉了jquery的使用,并对统一框架有了一定的了解。并在规定时间内完成了开发任务。
项目描述:
联通116114门户网站主要实现红段子的定制与包月。红段子内容包括短信和彩信。是由用户注册成为会员,自行在网上发布红段子,经审核后发布,再由个人用户到网站上包月或点播定制的一个业务。红段子门户网站建设目的,就是为了满足和实现红段子发布,定制流程
视频黄页个人定制:个人用户通过搜索引擎方式查询视频黄页,不注册也可以进行查询搜索,查询时用户可选择地区,行业,然后输入关键字进行搜索。搜索出结果后,个人用户可点击视频黄页,进行预览或定制或包月
2、xx.7 — xx.9.15:质检考评系统0502、0503、0504版本测试
这段时间主要熟悉质检系统的业务及需求,学习一些测试的基础知识,如单元测试、集成测试、压力测试、性能测试等,并能使用自动测试工具qtp进行一些重复的需要手动测试的功能,使用loadrunner模拟多个用户实施并发负载及实时性能监测。熟悉web应用在websphere及weblogic服务器上的部署。在测试的这段时间,对质检系统的所有的功能都有了一定的了解,并发现了许多系统以前存在的问题,项目提交测试部之后,没有太多功能上的问题。也为后期参与质检项目开发作好了准备。
但0504版本与其他版本依赖关系比较大,没有测试环境,许多功能没有测试,这个版本出现的问题比较多。所以在以后工作中需要注意这些问题,及时向上级反馈工作中的问题。
3。、xx.9.15— xx.11.15:质检考评系统0505开发
主要负责计划考评(人工事后,自动事后,轮次)的相关需求、质检标准等功能的实现及其他需求的测试。学习了struts1的相关知识,对质检系统业务有了进一步了解。这个版本的开发都在规定时间内完成了任务,版本质量也没有太大的问题。
4。、xx.11.16 — xx.1.10:甘肃12580项目开发
主要完成彩信模块所有的功能的实现,主要用到了jquery、dwr、ibatis、spring、boss验证、uma及webservice等技术
5。、xx.1.11—xx.2质检项目0506开发及测试
二、自我评价(包括本人需要向上级汇报的其它方面内容):
1、在这半年多的时间里,学习了很多新的知识,都是以前没有接触过的,可能刚工作的时
候有些浮躁,想有新的任务,又害怕做不好,但是最后都能如期的完成领导交付的任务,并学到新的技术,所以,事后会觉得没有什么是做不好的,只要自己动手去做,克服急躁情绪,积极、细致地的对待每一项任务。
2、测试工作,刚做测试工作的时候,大家都不太愿意去做,一是觉得自己不会这技术,
二是觉得自己的初忠是搞开发这一块,刚出来就做测试,也没有什么经验,总觉得不合适,但做过一段时间后,我深刻感受到开发的做测试的一个好处(当然是没有接触项目前),根据项目需求,可以很快的熟悉项目的业务,不再局限于做开发的只熟悉某一个模块的功能,而不了解其他模块的实现。并且,在以后做开发的时候自己会考虑更全面一些,思维也拓展更开一些。
3、在工作中需要不断的学习,通过项目不断提高自己的各项技能,做到脚踏实地,不怕多
做事、做小事,在点滴实践中完善提高自己。
4、在工作中可能会遇到一些纠结的小问题,自己可能花很多时间也解决不了,如果多问问
同事可能很快就可以解决问题,所以,不用爱面子,多向同事请教,但也不是有问题就问。
5、这半年工作时间里,发现和解决问题的能力,个人的技术都有了很大的提高,在项目中
遇到问题,不会再像刚开始不知道从何下手,不知道如何去定位一个问题,而现在都能较快的处理在工作中遇到的问题。
三、工作中主要的问题和不足:
1、技术水平有待提高。自身的能力提高了,做事的效率也会高一些,不然,许多技术都是
现学现用。会浪费许多工作的时间,可能延迟项目进度。并且刚开始只考虑到如何实现,并未考虑到性能和一些设计层面上的问题。
2、工作缺乏计划,未及时总结当天完成的任务及学到的新的知识。如果当天不制定计划,
可能会这件事做会,那件事做会,没有目的性,没有时间紧迫感,浪费许多时间,也不明确工作重点,造成事倍功半的效果。工作不及时总结,可能一段时间内不知道自己做了些什么,学到了些什么,自身能力到底提升了多少。
四、对今后工作的思考:
1、制定详细的学习计划,系统学习一些专业的知识。工作更加细心、仔细,加强责任心,不断提高自己分析问题和解决问题的能力。
2、在数据库方面有所突破。
3、多看源码,弄明白用到技术的原理,让自己软件开发的思想更全面一些。
4、在工作中要及时向项目经理反应自己的工作情况,包括已完成的任务及工作中存在的问题,提高工作的主动性。
5、注重团队合作,养成总结与反思的习惯,并有意识地提炼日常工作成果,整理成文档,以便以后遇到类似问题能够很快解决问题。
篇15: java实习总结
在学院领导老师的带领和安排下,上学期期末我们去北京进行了为期10天的专业实习。在实习期间,我们在特殊编程技能和软件开发的整体架构方面获得了很多。
本次培训分为两个阶段。前五天是第一阶段。我们学习了理论知识,巩固和深化了所学的编程知识。下面说说个人感受和经历
我学习理论知识
在最初的五天实践培训中,我们学习了java编程的理论课程。班主任幽默严谨。在老师的指导和启发下,我们巩固了以前在学校学过的编程知识,加深了它,澄清了一些以前对编程技术了解的错误或模糊的概念。
在课堂上,我们还以java中GUI编程常用的swing框架和JAVA的容器系统为切入点。在此期间,框架不仅学习了一般的编程知识和技能。在对框架全面系统的了解中,我也学到了框架中的泛型技术和架构思想的知识。在企业的实际编码过程中,每一个框架都构成了软件的基石。只有掌握几个框架知识,我们才能在实践中高效发展,使我们的产品在市场上立于不败之地。
在理论课的学习过程中,也暴露出一些问题,比如在学校学习,只知道学了什么却不知道为什么,不愿意深入钻研,提前学习一些知识。
二、项目开发实践
在完成理论知识的学习后,我们在过去的五天里在培训基地进行了项目开发的实践练习。
项目名称为superVCD,是海辉曾经收到的一个远程音乐录音管理软件项目的简化版。虽然已经简化,但其内容对于我们的学习仍然有相当的价值,对于我们了解真实的软件设计规范、编码规范、文档规范以及客户对软件的需求都有很大的参考价值。这个内容包括GUI设计和编码、容器和泛型知识、规范文档编写、测试和日志系统,甚至要求我们实现一个专门的轻量级数据库系统,这无疑是我们体验和积累丰富知识的好机会。
通常我们很少有机会完成这样规模的项目,所以我从这个项目的实际培训中获益匪浅。
首先,我学会了如何以标准化的方式编写代码和文档。文档和代码是团队成员在项目开发的沟通和合作中的纽带。风格随意的代码和语义缺失或不清晰的文档,会让其他团队成员无法理解和使用自己编写的程序。我一般都是随便写代码,不太注意这一点。经过这次实践锻炼,我会严格遵守编码标准。
其次,我学会了如何理解和分析客户的需求。软件是为客户而生的,只有了解客户的需求,才有可能写出优秀的软件。在这次实践练习中,老师教我们如何组织团队正确理解和分析客户的需求,为项目开发写一份完善的需求分析。
第三,我学会了按照需求来设计软件架构,这一点我觉得我们很多同学以前都缺乏,因为我们上学的时候代码长度短,功能单一,所以设计思路通常只停留在大脑里,非常模糊。在这个项目开发练习中,老师教我如何从需求中抽象出问题,模块化,一步一步细化,就像给高层建筑建柱子一样。
第四,学会了团队合作,共同发展。作为项目开发团队的领导,我的经验更深刻。光靠一个人的力量是远远不够的。只有管理和组织一个团队,才能最终完成项目开发。可能编程技术水平有高有低的团队成员。但是,每个人都有自己的闪光点,总能在团队中找到合适的位置。每个人在自己的团队中做出的贡献创造了不可磨灭的重大价值。
第五,我学会了如何与客户沟通,展示他们的项目。软件项目的开发最终需要客户的认可。客户理解和认可其产品的最好方法是用语言展示他们项目的最好的一面。最后一天,培训老师组织了项目答辩,为我们提供了一个锻炼表达能力、展示项目的舞台。
在实战过程中,我有一个项目开发过程的实践经验:学会了写规范的代码和文档;学会了如何正确理解和分析客户需求,设计项目;意识到团队合作精神的重要性,了解组织团队进行项目开发的具体流程,也学会了向客户展示产品和与客户沟通的技巧。
经过这次实训,我们不仅巩固和深化了编程的理论知识,更重要的是有机会实践项目开发,锻炼动手能力,积累了宝贵的经验。虽然实训已经结束,但我们不断学习的旅程才刚刚迈出第一步。还有很长的路要走,还有很多机会去实践和提高。我们应该以更加积极的态度充实自己,不断学习和迎接挑战。







