java学习要点(除C++特性外需要注意的特性)
2016-09-16 22:01
302 查看
最近要使用java对android进行开发,这也是第一次使用java,刚开始接触的时候也就是简单看一下语法,然后直接上手,这样经过两天后觉的有必要把java比较特殊的知识点总结出来,加深自己的记忆,不然每次用都网上搜索是比较费时间的一个过程。
当然,如果会C++,C,那么在学习的过程中,难免比较这两者这件的特性,以及比较这两者之间的不同。有些问题只是“知道,或者不知道”的问题,并不是一个难点。所以这些基础的知识点还是有必要列出来,方便记忆。
本文也是初学java的理解,很多描述可能不太准确,还不够深入理解,仅仅是看着java的语言特性自己的感觉,希望在以后的使用中有更加深刻的理解。
所以今天就把一些基本点列出来(基本上事和c/c++对比)。
extends,类的继承(C++中继承用冒号“:”)
implement,实现接口方法(而申明是接口的关键字为interface)
final,可以简单的额理解为c中的const关键字。
super,只基类;
this指针,和c++中的this指针一样,为方法中的第一个(影藏)参数,表示当前类的指针。
abstract class,抽象类。
继承+重写=多态(涉及override和super的灵活应用,和c++中virtual函数很相似)
一个源文件中只能有一个public类,一个源文件可以有多个非public类,在同一源文件中,不能给不同的类不同的包声明。
这里补充以下java的main函数。
java的函数入口定义为:
为什么是上面的形式呢(C/C++则是讲main函数独立出来,并非写入类中的一个方法)?
通常情况下, 如果要运行一个类的方法,必须首先实例化出来这个类的一个对象,然后通过"对象名.方法名()"的方式来运行方法,但是因为main是程序的入口,这时候还没有实例化对象,因此将main方法声明为static的,这样这个方法就可以直接通过“类名.方法名()”的方式来调用。
java这么做的好处是啥呢?java每个类都可以有一个main函数,而C++却只有一个。我觉得应该是:在启动程序时,可以指定不同类的main函数来达到启动不同的代码。
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承.
StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.通过它的append方法向其赋值.
sb.append("hello");
├List 接口
│├LinkedList 链表
│├ArrayList 顺序结构动态数组类
│└Vector 向量
│ └Stack 栈
└Set
Map
├Hashtable
├HashMap
└WeakHashMap List接口
ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于ArrayList和HashMap。
接口无法被实例化,但是可以被实现
接口与类相似点:
一个接口可以有多个方法。
接口文件保存在.java结尾的文件中,文件名使用接口名。
接口的字节码文件保存在.class结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了static和final变量。
接口不是被类继承了,而是要被类实现。
接口支持多重继承。
java包:类似c++中的命名空间name space
java也有泛型模板(JDK>5时才有的)
当然,如果会C++,C,那么在学习的过程中,难免比较这两者这件的特性,以及比较这两者之间的不同。有些问题只是“知道,或者不知道”的问题,并不是一个难点。所以这些基础的知识点还是有必要列出来,方便记忆。
本文也是初学java的理解,很多描述可能不太准确,还不够深入理解,仅仅是看着java的语言特性自己的感觉,希望在以后的使用中有更加深刻的理解。
所以今天就把一些基本点列出来(基本上事和c/c++对比)。
一,基本语法特点
java关键字
static,表示变量或者方法属于类,不用实例化对象也能使用(和c++的差不多)。extends,类的继承(C++中继承用冒号“:”)
implement,实现接口方法(而申明是接口的关键字为interface)
final,可以简单的额理解为c中的const关键字。
super,只基类;
this指针,和c++中的this指针一样,为方法中的第一个(影藏)参数,表示当前类的指针。
abstract class,抽象类。
继承+重写=多态(涉及override和super的灵活应用,和c++中virtual函数很相似)
类和对象
实例化:使用关键字new来创建一个对象。一个源文件中只能有一个public类,一个源文件可以有多个非public类,在同一源文件中,不能给不同的类不同的包声明。
这里补充以下java的main函数。
java的函数入口定义为:
public static void main(String[] args)
为什么是上面的形式呢(C/C++则是讲main函数独立出来,并非写入类中的一个方法)?
通常情况下, 如果要运行一个类的方法,必须首先实例化出来这个类的一个对象,然后通过"对象名.方法名()"的方式来运行方法,但是因为main是程序的入口,这时候还没有实例化对象,因此将main方法声明为static的,这样这个方法就可以直接通过“类名.方法名()”的方式来调用。
java这么做的好处是啥呢?java每个类都可以有一个main函数,而C++却只有一个。我觉得应该是:在启动程序时,可以指定不同类的main函数来达到启动不同的代码。
java的string和stringBuffer:
String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承.
StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.通过它的append方法向其赋值.
sb.append("hello");
java容器(java数据结构)
Collection├List 接口
│├LinkedList 链表
│├ArrayList 顺序结构动态数组类
│└Vector 向量
│ └Stack 栈
└Set
Map
├Hashtable
├HashMap
└WeakHashMap List接口
ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于ArrayList和HashMap。
java接口(interface)
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现
接口与类相似点:
一个接口可以有多个方法。
接口文件保存在.java结尾的文件中,文件名使用接口名。
接口的字节码文件保存在.class结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了static和final变量。
接口不是被类继承了,而是要被类实现。
接口支持多重继承。
java包:类似c++中的命名空间name space
java也有泛型模板(JDK>5时才有的)
相关文章推荐
- 逆向分析入门
- C51 实现动态内存分配
- 2016-9-16NOIP模拟题
- 程序设计基础(C语言)课程主页-2016级
- C语言中文件操作笔记
- 基础快速过 之C语言 二:什么是关键字 标识符 系统保留字 变量和常量[各个语言通用]
- 解析static关键字
- 两个数互换
- C/C++函数调用约定
- LeetCode 394. Decode String LeetCode 385. Mini Parser
- C语言字符串处理函数
- 有符号数和无符号数的转换及思考
- C语言字节对齐
- C++11的auto与decltype
- float与double在内存中储存的形式
- 深入理解C++中public、protected及private用法
- 内存池、进程池、线程池介绍及线程池C++实现
- 【LeetCode-107】Binary Tree Level Order Traversal II(C++)
- c++接口实现与分离(转载)
- 【LeetCode-102】Binary Tree Level Order Traversal(C++)