由于本人有c/c++基础,今天上手感觉java要比c++简单不少,不能说简单,但是我觉得c++转java要比java转c++要轻松。学了一天我发现java应该是目前综合素质最高的语言了,既没有c++的繁琐和编译问题也没有python自由过头的那种随意性,而是条理清晰,结构分明,封装优秀的泛型,而且社区资源非常好,又找到了学c语言时那种一板一眼的感觉,总之我认为写java代码不会为一些不知名的错误而烦恼。
分为方法区,堆区,栈区,方法区还有一个静态区
byte,short,int long,float,double,char,boolean
boolean
不能转化为其他类型除了基本类其他变量都是引用类型,类似c++的引用,但不用&符号。他们指向用new建立的对象,而且我们不用手动释放这些对象,当一个对象的引用为零时就会自动释放
关键字
关键字全为小写字母
用户自定义标识符
可以由数字字母下划线$构成,不能以数字开头
运算符没变
语句中goto
用break
取代了
continue也可以加标号
增强for
只能遍历集合和数组
修饰符 返回值类型 方法名(参数类型... 形参名){ }
等价于下述定义
修饰符 返回值类型 方法名(参数类型[] 形参名){ }
说明
这个对象一旦初始化就不能在改变了,如果改变了那就是创建了一个新的对象
但是指向他们的引用是可以直向其他对象的
创建变量
类型名 [ ]变量名
类型名 变量名 [ ]
初始化对象
1、=“ ”
2、=new 类型名[]{内容}
3、=new 类型名[大小]
太重要了只能放在这里
说明
"abc"
等效于 char[] data={ 'a' , 'b' , 'c' }
方法
public String()
:初始化新创建的 String对象,以使其表示空字符序列public String(char[] value)
:通过当前参数中的字符数组来构造新的Stringpublic String(byte[] bytes)
:通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。public boolean equals (Object anObject)
:将此字符串与指定对象进行比较public boolean equalsIgnoreCase (String anotherString)
:将此字符串与指定对象进行比较,忽略大小写public int length ()
:返回此字符串的长度public String concat (String str)
:将指定的字符串连接到该字符串的末尾。public char charAt (int index)
:返回指定索引处的 char值。public int indexOf (String str)
:返回指定子字符串第一次出现在该字符串内的索引public String substring (int beginIndex)
:返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。public String substring (int beginIndex, int endIndex)
:返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndexpublic char[] toCharArray ()
:将此字符串转换为新的字符数组。public byte[] getBytes ()
:使用平台的默认字符集将该 String编码转换为新的字节数组。public String replace (CharSequence target, CharSequence replacement)
:将与target匹配的字符串使用replacement字符串替换。public String[] split(String regex)
:将此字符串按照给定的regex(规则)拆分为字符串数组面向对象的实现就是类,与c++不同,实现全部在类内,在一个文件内有且只有一个public类且与文件名相同
构造函数和c++相同,没有析构函数
包
类似于c++中的头文件
import
关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入this
和super
访问成员
this.成员变量 ‐‐ 本类的
super.成员变量 ‐‐ 父类的
this.成员方法名() ‐‐ 本类的
super.成员方法名() ‐‐ 父类的
访问构造方法
this(...) ‐‐ 本类的构造方法
super(...) ‐‐ 父类的构造方法
static
静态成员
静态方法
静态代码块
static{}
优先于main方法和构造方法执行
final
类:被修饰的类,不能被继承。
方法:被修饰的方法,不能被重写。
变量:被修饰的变量,不能被重新赋值。
abstract
抽象
抽象类
abstract class 类名字 {
}
抽象方法
修饰符 abstract 返回值类型 方法名 (参数列表);
内部类
class Car { //外部类
class Engine { //内部类
}
内部类对象
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
匿名内部类
new 父类名或者接口名(){
// 方法重写
@Override
public void method() {
// 执行语句
}
};
interface
接口
public interface 接口名称 {
// 抽象方法
// 默认方法
// 静态方法
// 私有方法
}
子类具有与超类相同的属性和行为,子类可以直接访问超类的非私有属性和行为
集成是多态的前提
extends
class 父类 {
...
}
class 子类 extends 父类 {
...
}
继承后的成员
继承后的方法
继承后的构造方法
implements
接口实现
class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选】
}
同一行为具有不同的表现形式
父类类型 变量名 = new 子类对象;
变量名.方法名();
转型
向上转型
父类类型 变量名 = new 子类类型();
向下转型
子类类型 变量名 = (子类类型) 父类变量名;
instanceof
变量名 instanceof 数据类型
如果变量属于该数据类型,返回true。
如果变量不属于该数据类型,返回false。
Object类
说明
方法
public String toString()
:返回该对象的字符串表示。toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。public boolean equals(Object obj)
:指示其他某个对象是否与此对象“相等”。调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。默认地址比较,如果没有覆盖重写equals方法,那么Object类中默认进行==
运算符的对象地址比较,只要不是同一个对象,结果必然为false。对象内容比较,如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法.Objects工具类
说明
方法
public static boolean equals(Object a, Object b)
:判断两个对象是否相等。包装类
说明
方法
public static byte parseByte(String s)
:将字符串参数转换为对应的byte基本类型。public static short parseShort(String s)
:将字符串参数转换为对应的short基本类型。public static int parseInt(String s)
:将字符串参数转换为对应的int基本类型。public static long parseLong(String s)
:将字符串参数转换为对应的long基本类型。public static float parseFloat(String s)
:将字符串参数转换为对应的float基本类型。public static double parseDouble(String s)
:将字符串参数转换为对应的double基本类型。public static boolean parseBoolean(String s)
:将字符串参数转换为对应的boolean基本类型。Scanner类.
说明
方法
public Scanner(InputStream source)
: 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。public int nextInt()
:将输入信息的下一个标记扫描为一个 int 值Random类
说明
方法
public Random()
:创建一个新的随机数生成器。public int nextInt(int n)
:返回一个伪随机数,范围在 0 (包括)和 指定值 n (不包括)之间的int 值。StringBuilder类
说明
方法
public StringBuilder()
:构造一个空的StringBuilder容器。public StringBuilder(String str)
:构造一个StringBuilder容器,并将字符串添加进去。public StringBuilder append(...)
:添加任意类型数据的字符串形式,并返回当前对象自身。public String toString()
:将当前StringBuilder对象转换为String对象。Arrays类
说明
方法
public static String toString(int[] a)
:返回指定数组内容的字符串表示形式。public static void sort(int[] a)
:对指定的 int 型数组按数字升序进行排序。Math类
说明
方法
public static double abs(double a)
:返回 double 值的绝对值。public static double ceil(double a)
:返回大于等于参数的最小的整数。public static double floor(double a)
:返回小于等于参数最大的整数。public static long round(double a)
:返回最接近参数的 long。(相当于四舍五入方法)日期时间类
Date类
说明
方法
public Date()
:初始化为当前系统时间public Date(long date)
:date为即1970年1月1日00:00:00 GMT)以来的指定毫秒数。由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒public long getTime()
:把日期对象转换成对应的时间毫秒值。DateFormat类
说明
方法
public SimpleDateFormat(String pattern)
:用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat,public String format(Date date)
:将Date对象格式化为字符串。public Date parse(String source)
:将字符串解析为Date对象。Calender类
说明
方法
public static Calendar getInstance()
:使用默认时区和语言环境获得一个日历public int get(int field)
:返回给定日历字段的值。public void set(int field, int value)
:将给定的日历字段设置为给定值。public abstract void add(int field, int amount)
:根据日历的规则,为给定的日历字段添加或减去指定的时间量。public Date getTime()
:返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。System类
说明
方法
public static long currentTimeMillis()
:返回以毫秒为单位的当前时间。public static void arraycopy(Object 源, int srcPos, Object dest, int destPos, int length)
:将数组中指定的数据拷贝到另一个数组中。泛型的实现就是类似c++模板概念,就是将数据类型也当做参数传递
不得不说java的泛型编程封装的实在是太好了,相信很多自学c++都是在泛型各种容器上放弃的
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
:定义泛型方法修饰符 class 类名<代表泛型的变量> { }
:定义泛型类修饰符 interface接口名<代表泛型的变量> { }
:定义泛型接口说明
说明
通配符?
说明
泛型上限
类型名称 extends 类 > 对象名称
:只能接受该类型和子类
泛型下限
类型名称 super 类 > 对象名称
:只能接受该类型及其父类型
和c++差不多,好似指针,创建它的对象要用集合中的方法
说明
Iterator
主要用于迭代访问(即遍历)Collection
中的元素,因此Iterator
对象也被称为迭代器。方法
public E next()
:返回迭代的下一个元素。在调用next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。public boolean hasNext()
:如果仍有元素可以迭代,则返回 true。说明
格式
(参数类型 参数名称) ‐> { 代码语句 }
说明
说明
方法
说明
方法
说明
方法
说明
List
和Set
。其中,List
的特点是元素有序、元素可重复。Set
的特点是元素无序,而且不可重复。List
接口的主要实现类有ArrayList
和LinkedList
,Set
接口的主要实现类有HashSet
和TreeSet
。通用方法
public boolean add(E e)
: 把给定的对象添加到当前集合中 。public void clear()
:清空集合中所有的元素。public boolean remove(E e)
: 把给定的对象在当前集合中删除。public boolean contains(E e)
: 判断当前集合中是否包含给定的对象。public boolean isEmpty()
: 判断当前集合是否为空。public int size()
: 返回集合中元素的个数。public Object[] toArray()
: 把集合中的元素,存储到数组中。public Iterator iterator()
:获取集合迭代器Collections集合工具类
说明
方法
public static boolean addAll(Collection c, T... elements)
:往集合中添加一些元素。public static void shuffle(List> list)
打乱顺序 :打乱集合顺序。public static void sort(List list)
:将集合中元素按照默认规则排序。这个方法完成的排序,实际上要求了被排序的类型需要实现Comparable接口完成比较的功能public static void sort(List list,Comparator super T> )
:将集合中元素按照指定规则排序。使用此方法必须自己定义规则public int compare(String o1, String o2) :比较其两个参数的顺序。
两个对象比较的结果有三种:大于,等于,小于。
如果要按照升序排序, 则o1 小于o2,返回(负数),相等返回0,01大于02返回(正数) 如果要按照降序排序 则o1 小于o2,返回(正数),相等返回0,01大于02返回(负数)
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o2.getAge()‐o1.getAge();
}
}
list< E>集合
说明
方法
public void add(int index, E element)
: 将指定的元素,添加到该集合中的指定位置上。public E get(int index)
:返回集合中指定位置的元素。public E remove(int index)
: 移除列表中指定位置的元素, 返回的是被移除的元素public E set(int index, E element)
:用指定元素替换集合中指定位置的元素,返回值的更新前的元素。ArrayList< E >类
说明
方法
public ArrayList() ·
:构造一个内容为空的集合public E remove(int index)
:移除此集合中指定位置上的元素。返回被删除的元素。public E get(int index)
:返回此集合中指定位置上的元素。返回获取的元素。LinkedList< E>类
说明
方法
public void addFirst(E e)
:将指定元素插入此列表的开头。public void addLast(E e)
:将指定元素添加到此列表的结尾。public E getFirst()
:返回此列表的第一个元素。public E getLast()
:返回此列表的最后一个元素。public E removeFirst()
:移除并返回此列表的第一个元素。public E removeLast()
:移除并返回此列表的最后一个元素。public E pop()
:从此列表所表示的堆栈处弹出一个元素。public void push(E e)
:将元素推入此列表所表示的堆栈。public boolean isEmpty()
:如果列表不包含元素,则返回true。set< E>集合
说明
HashSet< E>类
说明
LinkedHashSet< E>类
说明
说明
HashMap
,HashMap下有个子类LinkedHashMap。方法
public V put(K key, V value)
· : 把指定的键与指定的值添加到Map集合中。使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的public V remove(Object key)
· : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。public V get(Object key)
根据指定的键,在Map集合中获取对应的值。public Set keySet()
: 获取Map集合中所有的键,存储到Set集合中。public Set> entrySet()
: 获取到Map集合中所有的键值对对象的集合(Set集合)。public K getKey()
:获取Entry对象中的键。public V getValue()
:获取Entry对象中的值。public Set> entrySet()
: 获取到Map集合中所有的键值对对象的集合(Set集合)。HashMap< E>集合
说明
LinkedHashMap< E>类
说明
说明
Throwable类
说明
方法
Error类
说明
Exception类
说明
说明
抛出异常throw
说明
格式
throw new 异常类名(参数);
声明异常throws
说明
格式
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ }
捕获异常try…catch
说明
finally代码块
说明
格式
try...catch....finally
自定义异常
说明
说明:
Thread类
说明
方法
public Thread()
:分配一个新的线程对象。public Thread(String name)
:分配一个指定名字的新的线程对象。public Thread(Runnable target)
:分配一个带有指定目标新的线程对象public Thread(Runnable target,String name)
:分配一个带有指定目标新的线程对象并指定名字public String getName()
:获取当前线程名称。public void start()
:导致此线程开始执行;Java虚拟机调用此线程的run方法。public void run()
:此线程要执行的任务在此处定义代码。public static void sleep(long millis)
:使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。public static Thread currentThread()
:返回对当前正在执行的线程对象的引用。同步代码块
格式
synchronized(同步锁){
需要同步操作的代码
}
同步方法
格式
public synchronized void method(){
可能会产生线程安全问题的代码
}
Lock锁
public void lock()
:加同步锁。public void unlock()
:释放同步锁。Timed Waiting(计时等待)
说明
BLOCKED(锁阻塞)
说明
Waiting(无限等待)
说明
NEW(新建)
说明
Runnable(可运行)
说明
Teminated(被终止)
说明
说明
方法
public static ExecutorService newFixedThreadPool(int nThreads)
:返回线程池对象。(创建的是有界线程池,也就是池中的线程个数可以指定最大数量)public Future> submit(Runnable task)
获取线程池中的某一个线程对象,并执行说明
方法
public File(String pathname)
:通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child)
:从父路径名字符串和子路径名字符串创建新的 File实例。public File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的 File实例。public String getAbsolutePath()
:返回此File的绝对路径名字符串。public String getPath()
:将此File转换为路径名字符串。public String getName()
:返回由此File表示的文件或目录的名称。public long length()
:返回由此File表示的文件的长度。public boolean exists()
:此File表示的文件或目录是否实际存在。public boolean isDirectory()
:此File表示的是否为目录。public boolean isFile()
:此File表示的是否为文件。public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。public boolean delete()
:删除由此File表示的文件或目录。public boolean mkdir()
:创建由此File表示的目录。public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录说明
说明
OutputStream字节输出流
说明
方法
public void close()
:关闭此输出流并释放与此流相关联的任何系统资源。public void flush()
:刷新此输出流并强制任何缓冲的输出字节被写出。public void write(byte[] b)
:将 b.length字节从指定的字节数组写入此输出流。public void write(byte[] b, int off, int len)
:从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。public abstract void write(int b)
:将指定的字节输出流。*FileOutputStream类
说明
方法
public FileOutputStream(File file)
:创建文件输出流以写入由指定的 File对象表示的文件。public FileOutputStream(String name)
: 创建文件输出流以指定的名称写入文件。public FileOutputStream(File file, boolean append)
: 创建文件输出流以写入由指定的 File对象表示的文件。public FileOutputStream(String name, boolean append)
: 创建文件输出流以指定的名称写入文件。InputStream字节输入流
说明
方法
public void close()
:关闭此输入流并释放与此流相关联的任何系统资源。public abstract int read()
: 从输入流读取数据的下一个字节。public int read(byte[] b)
: 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。FileIuputStream类
说明
方法
FileInputStream(File file)
: 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名FileInputStream(String name)
: 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。说明
Reader字符输入流
说明
方法
public void close()
:关闭此流并释放与此流相关联的任何系统资源。public int read()
: 从输入流读取一个字符。public int read(char[] cbuf)
: 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。FileReader类
说明
方法
Writer字节输出流
说明
方法
void write(int c)
写入单个字符。void write(char[] cbuf)
写入字符数组。abstract void write(char[] cbuf, int off, int len)
写入字符数组的某一部分,off数组的开始索引,len写的字符个数。void write(String str)
写入字符串。void write(String str, int off, int len)
写入字符串的某一部分,off字符串的开始索引,len写的字符个数。void flush()
刷新该流的缓冲。void close()
关闭此流,但要先刷新它。FileWriter类
说明
方法
FileWriter(File file)
: 创建一个新的 FileWriter,给定要读取的File对象。FileWriter(String fileName)
: 创建一个新的 FileWriter,给定要读取的文件的名称。try catch finally语句
try-with-resource语句
try (创建流对象语句,如果多个,使用';'隔开) {
// 读写数据
} catch (IOException e) {
e.printStackTrace();
}
优化后的try-with-resource语句
// 被final修饰的对象
final Resource resource1 = new Resource("resource1");
// 普通对象
Resource resource2 = new Resource("resource2");
// 引入方式:直接引入
try (resource1; resource2) {
// 使用对象
}
说明
方法
public Properties()
:创建一个空的属性列表public Object setProperty(String key, String value)
: 保存一对属性。public String getProperty(String key)
:使用此属性列表中指定的键搜索属性值。public Set stringPropertyNames()
:所有键的名称的集合。public void load(InputStream inStream)
: 从字节输入流中读取键值对。说明
字节缓冲流
方法
字符缓冲流
方法
public BufferedReader(Reader in)
:创建一个 新的缓冲输入流。public BufferedWriter(Writer out)
: 创建一个新的缓冲输出流。BufferedReader: public String readLine()
: 读一行文字。BufferedWriter: public void newLine()
: 写一行行分隔符,由系统属性定义符号InputStreamReader类
说明
方法
InputStreamReader(InputStream in)
: 创建一个使用默认字符集的字符流。InputStreamReader(InputStream in, String charsetName)
: 创建一个指定字符集的字符流** OutputStreamWriter类**
说明
方法
OutputStreamWriter(OutputStream in)
: 创建一个使用默认字符集的字符流。OutputStreamWriter(OutputStream in, String charsetName)
: 创建一个指定字符集的字符流。说明
ObjectOutputStream类
说明
方法
public ObjectOutputStream(OutputStream out)
: 创建一个指定OutputStream的ObjectOutputStream。public final void writeObject (Object obj)
: 将指定的对象写出。ObjectInputStream类
说明
方法
public ObjectInputStream(InputStream in)
: 创建一个指定InputStream的ObjectInputStream。public final Object readObject ()
: 读取一个对象。** PrintStream类**
方法
public PrintStream(String fileName)
: 使用指定的文件名创建一个新的打印流。Socket客户端
方法
SeverSocket服务器
方法