您的位置:首页 > 编程语言 > Java开发

java基础<四>

2015-02-08 19:28 429 查看
多维数组:

二维数组举例: java中二维数组不必是规则矩阵形式

int[][] a={{1,2},{2,3},{3,4,5}}



int[][] a=new int[3][];

a[0]=new int[10];

a[1]=new int[9];

a[2]=new int[8];

数组的拷贝:::

system类里定义了一个arraycopy方法。

JAVA数组的复制是引用传递,而并不是其他语言的值传递。

这里介绍java数组复制的4种方式极其问题:

第一种方式利用for循环:

int[] a={1,2,4,6};

int length=a.length;

int[] b=new int[length];

for (int i = 0; i < length; i++) {

b[i]=a[i];

}

第二种方式直接赋值:

int[] array1={1,2,4,6};

int[] array2=a;

这里把array1数组的值复制给array2,如果你这样去运行,就会发现此时两个数组的值是一样的。这是传递的是引用(也就是地址),之后改变其中一个数组另一个也会跟着变化。

第三种方式:

利用Arrays自带的copyof

int copy[] = Arrays.copyOf(a, a.length);

第四种方式:

这里再介绍一下System.arraycopy这个函数,从JAVA
API
中找了一段。大家看一下。

public static voidarraycopy(Object src, int
srcPos, Object dest, int destPos, int length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从src引用的源数组到dest引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于length参数。源数组中位置在srcPos到srcPos+length-1之间的组件被分别复制到目标数组中的destPos到destPos+length-1位置。
打印数组::::::::::::::java.util包可以好好研究一下。
int a[]={1,3}; java.util.Arrays.toString(a);

数组排序:Arrays.sort(a)

二分查找法:Arrays.binarySearch(a,12)

增加for循环:for(int i:a){}

常用类,包装类:

字符串相关类:String,StringBuffer,StringBuilder

时间处理相关类:Date,DateFormat,SimpleDateFormat,Calendar

自动拆箱与自动装箱:即:Integer i=100, int a=new Integer(100);

缓存处理:

Integer a=1234;

Integer b=1234;

System.out.println(a==b); 一会为true,一会为false。原因是:[-128,127]之间的数,仍然是当作基本数据类型来处理。

时间处理相类类::::::



Date时间类:java.util.Date 它的对象表示一个特定的瞬间。精确到毫秒。

JAVA中的时间说白了也是数字,是从1970年1月1号0点开始到某个时刻的毫秒数,类型是long。

//很多方法都遗弃了

Date t=new Date();

long t1=System.currentTimeMillis();

long t3=t.getTime();

//getTime,setTime没有被遗弃

t.setTime(t1);

//equals方法写的非常秒

public boolean equals(Object o){

return o instanceof Date && getTime()==((Date)o).getTime();

}

//跟日期,年月日相关的计算都丢给一个类Calendar

Date类的核心就是那个数.long值。

可以把源码看看,但是也要适度,做什么事都要适度,都不要过度。

时间和字符串的相互转换:DateFormat,SimpleDateFormat

DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");//抽象类\

Date d=new Date();

out.println(df.format(d)); //将时间对象格式化成字符串

String string="1977-7-7 10:23:15";

DateFormat df2=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

Date date=df2.parse(string);

Calendar类::::::

人们对于时间的认识是:某年某月某日,计算机是long类型的数字。通过Calendar在二者之间搭起桥梁。

GregorianCalendar是Calendar的一个具体实现子类,注意:月份:1月是0,2月是1,星期:周日是1,周一是2

因为月份和星期的问题非常恼火,因为1月是0,周日是1.可以考虑其它包.

Calendar c=new GregorianCalendar();

c.set(2001, 0, 10, 12, 30);

c.setTime(new Date());

Date date=c.getTime();

out.print(date);

//日期计算

c.add(Calendar.YEAR, 10);

可视化日历:

java可视化日历的实现实例源代码,日期操作练习题,接收键盘输入,设置当前日期,求出当月最大的天数,java calendar的应用介绍。java输出当前日历的原理。

package bw123.com;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Scanner;

/**

* 可视化日历程序

* @author dell

*

*/

public class Rili {

public static void main(String[] args) {

System.out.println(“请输入日期(按照格式:2030-3-10):”);

Scanner scanner = new Scanner(System.in);

String temp = scanner.nextLine();//读取用户键盘输入的一行字符串

DateFormat format = new SimpleDateFormat(“yyyy-MM-dd”);//设置日期的时间格式

try {

Date date = format.parse(temp);//将时间字符串转换为long类型的时间原型

Calendar calendar = new GregorianCalendar();

calendar.setTime(date);//设置当前的时间

int day = calendar.get(Calendar.DATE);

calendar.set(Calendar.DATE, 1);

int maxDate = calendar.getActualMaximum(Calendar.DATE);//获取当月最大的日期数

System.out.println(“日\t一\t二\t三\t四\t五\t六”);//打印星期数

for(int i=1;i<calendar.get(Calendar.DAY_OF_WEEK);i++){//假如第一天不是星期一,那么就在这天前输出相应的空格数

System.out.print(‘\t’);

}

for(int i=1;i<=maxDate;i++){

if(i==day){

System.out.print(“*”);//在当前日期前输出*号

}

System.out.print(i+”\t”);

int w = calendar.get(Calendar.DAY_OF_WEEK);

if(w==Calendar.SATURDAY){//每周星期六换行

System.out.print(‘\n’);

}

calendar.add(Calendar.DATE, 1);

}

} catch (ParseException e) {

e.printStackTrace();

}

}

}
File类::文件操作:::::
//递归打印目录结构

static void printFile(File f,int level){

for(int i=0;i<level;i++){

out.print("-");

}

out.print(f.getName());

if(f.isDirectory()){

File[] files=f.listFiles();

for(File temp:files){

printFile(temp, level+1);

}

}

}

异常机制:

try-catch-finally-return执行顺序:

在没有抛异常的情况下:先把try中执行完,然后finally中,然后try中的return语句。

抛出异常的情况下,try-catch-finally-catch中的return。

如果finally中的return语句,则全部执完毕。所以finally中一般不要加return语句。

方法重写中声明异常原则,包含如下意思:

父类没有声明异常,子类也不能。不可抛出原有方法抛出异常的父类或上层类。抛出的异常类型的数目不可比原有的还多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: