数组的定义
概念:同一种数据类型的集合。为引用数据类型存到堆内存中。
l 特点:数组中数据从0开始编号,操作方便。JVM运行时检查数组是否越界。
数组的声明与初始化:
数组的声明 | ①数据类型 [] 数组名 ②数据类型 数组名[] 例如:int(数据元素的类型) [] a(数组名) 或 int a [] |
声明内存图 | |
数组的实例化 | ①new 数据类型 [数组长度或个数] ② new 数据类型 [] {数据元素,、、、、} 例如:new int [4]; new int [] {2,3,4,5}; int a [] = {3,2,4,5}; 注意:数组同样进行默认初始化。 |
实例化内存图 |
排序算法总结
1) 插入排序:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2
class Charu { public static void main(String[] args) { int a [] = {1,9,8,3,0,5,7,3,2,9}; for(int i=1; i<a.length; i++) { for(int j=i; (j>0)&&(a[j]<a[j-1]); j--) { swap(a,j,j-1);//交换方法 } } } } |
2) 冒泡排序:
class Maopao { public static void main(String[] args) { int a [] = {1,9,8,3,0,5,7,3,2,9}; for(int i=0; i<a.length; i++) { for(int j=a.length-1; j>i; j++) { if(a[j]<a[j-1]) { swap(a,j,j-1); } } } } } |
3) 选择排序:
public class Xuanze { public static void main(String [] args) { int arr [] = {2,1,9,4,7,5,7,3,8}; sort(arr); } public static void sort(int [] a) { for(int i=0; i<a.length-1; i++) { for(int j=i+1; j<a.length; j++) { swap(a,i,j); } } } } |
java.lang.System
System类是final类,不能被继承,构造方法私有,不能被实例化。包含三个静态属性:标准输入(InputStream in)、标准输出(PrintStream out)和错误输出流(PrintStream err)。
标准输入:system.in默认连接到键盘。
标准输出:system.out默认连接到控制台。
错误输出流:在eclipse中调用此方法打印的结果是红色的。
可以通过setIn方法setOu方法tsetErr方法进行重定向。
可以取得当前时间:public static long currentTimeMillis(); |
垃圾回收:public static void gc(); 调用此方法相当于调用Runtime.getRuntime().gc();需要重写protected void finalize();方法。 |
public static Properties getProperties();获取系统属性。 |
|
java.lang.Runtime
每个JVM启动时实际上都对应着一个Runtime实例,表示运行时,使应用程序能够与其运行的环境相连接 。
l Runtime构造方法被私有化,可以通过Runtime getRuntime()取得实例,属于单例设计。
l Runtime可以操作JVM。
l 获取JVM的内存和动态库信息。但是无法设置JVM的内存,如果想自己设置JVM的内存可以通过一下方法:
1.单独的.class:java -Xms64m -Xmx256m Test |
2.打开eclipse Run->Open Run Dialog->Arguments,在VM arguments中输入-Xms64m -Xmx256m ,点击Run就可以运行程序了。 |
3.eclipse虚拟机,window->Preferences->Java->Installed JREs选择运行的虚拟机,在Default VM Arguments中加入输入-Xms64m -Xmx256m ,也可以添加其他参数如-Xms128M -XX:PermSize=64M-XX:MaxPerSize=128M |
4.修改eclipse.ini-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M |
l 运行垃圾回收:void gc();
l 调用本机程序:public Process exec(Stringcommand);
r.exec("notepad ni.txt"); //ni.txt为当前路径下的文件,想访问不同路径文件,需添加路径信息。 |
|
Java日期处理
日期处理类:java.util.Date() 和 java.text.DateFormat的子类SimpleDateFormat以及java.util.Calendar的子类GregorianCalendar。
Date类大部分方法都已经过时,最常用的是 new Date();封装一个当前时间,表示特定的瞬间,精确到毫秒。默认是格林威治标准时和世界时 (UT) 。
注意:月份由从 0至 11的整数表示;0是一月、1是二月等等;因此 11是十二月。
public Date(); 初始化Date对象,表示当前时间。 |
public Date(long date): 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。 |
|
SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。
l 构造方法:SimpleDateFormat(Stringpattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
l public final String format(Date date) 格式化方法(日期 -> 文本)
l Pattern(模式)用字符串的表示形式为:
Calendar类封装了大量的关于时间的详细信息,以键值对的方式存储在Calendar的静态属性里面。
例如:
DAY_OF_MONTH | 一月中的某天 |
HOUR_OF_DAY | 指示一天中的小时 |
|
|
通过protected Calendar()构造方法 或 public static CalendargetInstance()获取带有默认时区和语言环境的Calendar。
查表法获取标准时间:
import java.util.*; public class CalendarDemo { public static String[] mtable = {"一月","二月","三月","四月", "五月","六月","七月","八月", "九月","十月","十一月","十二月"}; public static void main(String [] args) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = (c.get(Calendar.MONTH)); String month1 = mtable[month]; int day = c.get(Calendar.DAY_OF_MONTH); int week = (c.get(Calendar.DAY_OF_WEEK)-1); System.out.println(year+"年"+month1+day+"日"+week); |
Java.lang.Math
Math类包含基本的数字操作,如指数、对数、平方根和三角函数。
重要方法:
n public staticdouble ceil(double a) :返回比当前参数大的最小整数,返回值为double。
n public staticdouble floor(double a) :返回比当前参数小的最大整数,返回值为double。
n public staticlong round(double a) :四舍五入。
n public staticdouble random() : 生成随机数,返回带正号的 double 值,大于或等于 0.0,小于 1.0。返回值是一个伪随机 (pseudorandomly)选择的数,在上述范围内(大致)均匀分布。第一次调用该方法时,它将创建一个新的伪随机数生成器。缺点:返回值为double。
java.util.Random提供同样的随机数生成器,Random 类所实现的算法使用一个 protected 实用工具方法,每次调用它都可提供最多 32 个伪随机生成的位。有多种返回类型,很多应用程序会发现 Math类中的random方法更易于使用。