java的学习记录7

来源:互联网 发布:linux 文件排序 编辑:程序博客网 时间:2024/06/05 15:16


要使用ArrayList,必须导入import java.util.*;  这是一个管理命名空间的机制。一个java源文件称为编译单元,后缀名为.java,每个编译单元只能有一个public类,该类名必须与文件名一致,非public类只要用来为public类提供支持。

Java的可运行程序是一组.class文件。

类库library是一组类文件,每一个文件只有一个public类和若干非public类。

package rtrt;   意思该.java文件在名为rtrt的类库的一部分,想要使用该类,必须用全名或使用import.

java解释器:找到环境变量CLASSPATH,在其中的一个或多个目录中查找.class文件。

类库创建者:使用package。

我们可以创建自己的类库(工具库)来减少代码量,例如用print()代替System.out.print()。


源代码:

/**
 * @(#)print.java
 *http://blog.csdn.net/a542214712/article/details/8206192
 *
 * @author
 * @version 1.00 2014/6/27
 */
package net.kimown.util;
import java.io.*;

public class print {
    public static void print(Object obj){
        System.out.print(obj);
    }
    public static void println(Object obj){
        System.out.println(obj);
    }
    public static void println(){
        System.out.println();
    }
}

生成的文件夹net放入D:\Program Files\Java中,在环境变量CLASSPATH里添加D:\Program Files\Java;。

在D:\Program Files\Java中建立文件print.java;


/**
 * @(#)print.java
 *http://blog.csdn.net/a542214712/article/details/8206192
 *
 * @author
 * @version 1.00 2014/6/27
 */
package net.kimown.util;
import java.io.*;

public class print {
    public static void print(Object obj){
        System.out.print(obj);
    }
    public static void println(Object obj){
        System.out.println(obj);
    }
    public static void println(){
        System.out.println();
    }
}


运行,生成print.class文件。


注意:在相同目录下新建文件hello.java测试,

/**
 * @(#)hello.java
 *
 *
 * @author
 * @version 1.00 2014/6/27
 */

import static net.kimown.util.print.*;

public class hello {
    public static void main(String[] args){
        print("111");
        println("1");
        print("22");    
        print("hello");    
    }   
}

结果:

1111
22hello


注意:如果,如果不是在D:\Program Files\Java目录下建立hello.java文件,那么恭喜你:


错误: 程序包net.kimown.util不存在


天坑,浪费我半天时间啊。。

参考:http://blog.csdn.net/yjjm1990/article/details/7968517



重写range()方法。

package net.kimown.util;

public class range{
    public static int[] range(int n){
        int[] result=new int[n];
        for(int i=0;i<n;i++)
            result[i]=i;
            return result;
    }
    public static int[] range(int start,int end){
        int size=end-start;
        int[] result=new int[size];
        for(int i=0;i<size;i++)
            result[i]=start+i;
            return result;
            }
    public static int[] range(int start,int end,int step){
        int size=(end-start)/step;
        int[] result=new int[size];
        for(int i=0;i<size;i++)
            result[i]=start+i*step;
            return result;
            }
}

测试:

import static net.kimown.util.range.*;

public class rangedemo{
    public static void main(String[] args){
        int[] a=range(5);
        int[] b=range(5,9);
        for(int i:a)
            System.out.print(i+" ");
            System.out.println();
        for(int i:b)
            System.out.print(i+" ");
            System.out.println();
            
        for(int i:range(0,10,2))
            System.out.print(i+" ");            
    }
}

结果:

0 1 2 3 4
5 6 7 8
0 2 4 6 8


创建一个cookie对象,

package net.kimown.util;

public class cookie{
    public cookie(){
        System.out.println("1111");
    }
    void bite(){
        System.out.println("bite()");
    }
}

在另一个对象中3使用它。

import net.kimown.util.cookie;

public class dinner{
    public static void main(String[] args){
        System.out.println("dinner");
        cookie c=new cookie();
    }
}

结果:

dinner
1111

分析:不能使用bite(),错误: bite()在cookie中不是公共的; 无法从外部程序包中对其进行访问.。如果想进行访问请加入public void bite() .执行结果:

dinner
1111
bite()


参考:

http://www.

blogjava.net/cjren/archive/2006/07/06/56888.aspx

http://blog.

sina.com.cn/s/blog_65ad838e0100hlto.html



private的用法:


class sundae{
        private sundae(){}
        static sundae makeasundae(){
                return new sundae();
        }
}
public class icecream{
        public static void main(String[] args){
                sundae s=new sundae();
        //      sundae s=sundae.makeasundae();
        }
}

结果:

icecream.java:9: 错误: sundae()可以在sundae中访问private
                sundae s=new sundae();
                         ^
1 个错误

分析:在这里,由于sundae()的构造器为private,那么,别的类就不能直接通过构造器创建sundae对象,必须调用makeasundae()方法 来产生sundae的对象。



protected的用法:

import net.kimown.util.cookie;

public class chocolate extends cookie{
    public chocolate(){
        System.out.println("chocolate constructor ");
    }
    public void chomp(){
    //bite();    
    }
    public static void main(String[] args){
        chocolate c=new chocolate();
        c.chomp();
    }
}

结果:

1111
chocolate constructor

将cookie的bite()方法权限改为protected,同时将chocolate的bite()的注释取消。

结果:

1111
chocolate constructor
bite()



6.3 接口和实现

注意:类的权限大都不能设为private,或protected。


class soup1{
    private soup1(){   //构造器设置为private阻止直接创建类的实例
    }
    public static soup1 makesoup(){
        return new soup1();    //这里返回了一个soup1对象的引用。这里可以添加代码,记录创建了多少个soup1对象。
    }
}
class soup2{
    private soup2(){  ////构造器设置为private阻止直接创建类的实例
    }
    private static soup2 sp2=new soup2();
    public static soup2 access(){
        return sp2;    //单例模式。一个类只能创建一个对象。
    }
    public void f(){
    }
}
public class lunch{
    void testprivate(){
        
    }
    void teststatic(){
        Soup1 sp1=soup1.makesoup();
    }
    void testsingleton(){
        sp2.sccess().f();
    }
}








0 0
原创粉丝点击