zoukankan      html  css  js  c++  java
  • 常用类

    1、

    package day11;
    
    public class Alignment {
    	// 在JDK1.5之前,可以声明固定的常量值表示一些列常量。
    	public static final int LEFT = 1;
    	public static final int CENTER = 2;
    	public static final int RIGHT = 3;
    
    	/*
    	 * 执行对齐的操作,对齐方式: 左对齐 居中对齐 右对齐
    	 */
    	public void align(int value) {
    		if (value == 1) {
    			// 左对齐
    		} else if (value == 2) {
    			// 居中对齐
    		} else if (value == 3) {
    			// 右对齐
    		}
    	}
    
    	public void align2(int value) {
    		if (value == LEFT) {
    			// 左对齐
    		} else if (value == CENTER) {
    			// 居中对齐
    		} else if (value == RIGHT) {
    			// 右对齐
    		}
    	}
    
    	// 使用枚举类型作为参数。
    	public void align3(Align value) {
    		if (value == Align.LEFT) {
    			// 左对齐
    		} else if (value == Align.CENTER) {
    			// 居中对齐
    		} else if (value == Align.RIGHT) {
    			// 右对齐
    		}
    	}
    }
    
    class UseAlign {
    	public void f() {
    		Alignment a = new Alignment();
    		// 客户端使用,实现对齐方式。
    		a.align(1);
    		a.align(Alignment.LEFT);
    		// 虽然我们提供了一组常量值的表示方案(静态常量值),
    		// 但是,客户端完全可以忽略我们提供的方案。依然
    		// 坚持使用魔幻数字。
    		a.align2(3);
    		// 更有甚者,客户端完全可以传递一个我们根本就不提供
    		// 的值,也不会产生任何编译错误。(没有编译期间的类型
    		// 检查)
    		a.align2(1000);
    		// 枚举之后
    		a.align3(Align.CENTER);
    		// 错误,类型不匹配
    		// a.align3(1);
    		// 错误,枚举中没有声明JUSTIFY常量
    		// a.align3(Align.JUSTIFY);
    
    	}
    }
    

      2、switch对枚举类型的支持。

    /*
     * switch对枚举类型的支持。
     * 
     */
    package day11;
    
    public class Switch {
    
    	public static void main(String[] args) {
    		Align a = Align.RIGHT;
    		switch (a) {
    		case LEFT:
    			System.out.println("左对齐");
    			break;
    		case CENTER:
    			System.out.println("居中对齐");
    			break;
    		case RIGHT:
    			System.out.println("右对齐");
    			break;
    		}
    	}
    }
    

      3、枚举类型

    /*
     * 枚举类型
     * 枚举使用enum来声明。用来声明一组固定值的常量。
     * 按照惯例,枚举常量值全部大写。
     * 
     * 枚举的优势:
     * 比起编译期间的常量(JDK1.5之前),枚举提供了编译期间
     * 类型安全的检查。如果我们使用枚举做参数,则客户端必须提供
     * 相同的枚举类型,同时,提供的枚举值必须在枚举类型声明
     * 的常量值范围之内。
     * 
     * 枚举类型隐式继承java.lang.Enum类型,因此,枚举类型
     * 不能在继承其他类。
     * 编译器会自动为枚举类型生成两个静态方法:
     * values 返回一个枚举数组,包含枚举中声明的所有枚举常量
     * valueOf 根据参数(String)指定的值,返回对应的枚举
     * 常量值。
     * 
     * 枚举类型可以实现接口。此时,可以选择所有枚举常量统一
     * 的实现,也可以每个枚举常量都单独实现。
     * 
     * 枚举类型也可以声明抽象方法,此时,由各个枚举常量给出
     * 具体的实现。
     */
    package day11;
    
    public enum Align implements EInter {
    	LEFT {
    		@Override
    		public void introduce() {
    			System.out.println("我是左对齐");
    		}
    
    		@Override
    		void absM() {
    			// TODO Auto-generated method stub
    			
    		}
    	},
    	CENTER {
    		@Override
    		public void introduce() {
    			System.out.println("我是居中对齐");
    		}
    
    		@Override
    		void absM() {
    			// TODO Auto-generated method stub
    			
    		}
    	},
    	RIGHT {
    		@Override
    		public void introduce() {
    			System.out.println("我是右对齐");
    		}
    
    		@Override
    		void absM() {
    			// TODO Auto-generated method stub
    			
    		}
    	};
    	
    	abstract void absM();
    	
    	public static void main(String[] args) {
    		// 返回枚举常量的数组
    		Align[] a = Align.values();
    		for (Align al : a) {
    			// 当输出一个引用类型时,会调用该类型的toString方法。
    			// System.out.println(al);
    			EInter e = al;
    			e.introduce();
    
    		}
    		// Align t = Align.valueOf("LEFT");
    		// System.out.println(t);
    
    	}
    	/*
    	 * @Override public void introduce() { System.out.println("枚举的接口实现"); }
    	 */
    }
    
    interface EInter {
    	void introduce();
    }
    

      4、包装类

     boolean-> Boolean
     byte -> Byte
     short -> Short
     char -> Character
     int -> Integer
     long -> Long
     float -> Float
     double -> Double
    

      5、包装类型

    /*
     * 包装类型
     * 每个基本数据类型都对应一个包装类型。当我们需要将基本数据类型当
     * 成对象使用时(例如在集合中),就可以使用对应的包装类型。
     * 基本数据类型与包装类型之间是可以进行相互转换的。
     * 
     * 封箱:将基本数据类型转换成包装类型。
     * 拆箱:将包装类型转换成基本数据类型。
     * 自动拆箱与封箱
     * 自动封箱:当需要包装类型时,如果我们提供的是基本数据类型,则
     * 编译器可以自动的将基本数据类型转换成包装类型。(通过调用包装
     * 类型的valueOf方法)
     * 自动拆箱:当需要基本数据类型时,如果我们提供的是包装类型,则
     * 编译器可以自动的将包装类型转换成基本数据类型。(调用包装类型
     * 的TValue方法,T就是对应的基本数据类型)
     * 
     * 包装类是非可变类,包装类型对象一经创建,其所包装的基本数据
     * 类型值就不能够再进行更改。
     * 非可变类的优势:非可变类创建的对象,其内部数据不能更改,因此
     * 非可变对象可以自由的实现共享。(没有必要为每一个需要该对象
     * 的位置去创建一个不同的对象)。
     * 
     * 包装类的缓存机制:
     * 包装类会缓存常用的对象。这样可以避免创建重复的对象,实现
     * 对象的共享。
     * Boolean,Byte缓存全部
     * Character 0 ~ 127
     * Short,Integer,Long -128 ~ 127
     * Float, Double 没有缓存。
     * 
     * 当使用== !=(既可以应用于基本数据类型,也可以应用于引用
     * 类型)比较基本数据类型与包装类型时,会将包装类型拆箱处理,
     * 然后比较基本数据类型的值。
     */
    package day11;
    
    public class Wrapper {
    	public static void main(String[] args) {
    		int x = 5;
    		// 基本数据类型转换成包装类型
    		// 第一种方式:通过new创建对象
    		Integer i = new Integer(x);
    		// 第二种方式:调用包装类的静态方法valueOf。
    		Integer i2 = Integer.valueOf(x);
    		// 包装类型转换成基本数据类型。
    		// 通过调用包装类型的TValue方法,其中,T
    		// 为对应的基本数据类型。
    		int y = i.intValue();
    
    		int a = 5;
    		Integer aw = a;
    		// Integer aw = Integer.valueOf(a);
    		int b = aw;
    		// int b = aw.intValue();
    		Object o = 100;
    		/*
    		 * 不要这样使用。 for (Integer ax = 1; ax <= 100; ax++) {
    		 * 
    		 * }
    		 */
    		Integer x1 = 100; // Integer x1 = Integer.valueOf(100);
    		Integer x2 = 100;
    		System.out.println(x1 == x2);
    		x1 = 200; // Integer x1 = Integer.valueOf(200);
    		x2 = 200;
    		System.out.println(x1 == x2);
    		// 拆箱还是封箱?
    		Integer e = new Integer(200);
    		int u = 200;
    		System.out.println(e == u);
    
    	}
    }
    

      6、String 的方法 

    package day11;
    
    public class StringTest {
    
    	public static void main(String[] args) {
    		String s = "abcdefg";
    		String s2 = new String("1234578");
    		// 返回String对象字符的长度。(以字符为单位)。
    		System.out.println(s.length());
    		// 判断当前对象与参数指定的String对象字符序列
    		// 是否相等,如果相等,返回true,否则返回false。
    		System.out.println(s.equals("abc"));
    		// 与equals相同,但是会忽略大小写。
    		System.out.println(s.equalsIgnoreCase("aBC"));
    		// 如果当前对象大于参数指定的对象,返回值大于0,如果
    		// 当前对象等于参数指定的对象,返回0,如果当前对象小于
    		// 参数指定的对象,返回值小于0。
    		System.out.println(s.compareTo("ABC"));
    		// 判断当前对象是否以参数指定的对象开头,是则返回true,
    		// 否则返回false。
    		System.out.println(s.startsWith("ab"));
    		// 判断当前对象是否以参数指定的对象结尾,是则返回true,
    		// 否则返回false。
    		System.out.println(s.endsWith("ab"));
    		// 返回参数指定索引位置的字符。(索引从0开始)
    		System.out.println(s.charAt(1));
    		// 返回子字符序列,参数指定开始的位置,一直到字符序列
    		// 末尾。
    		System.out.println(s.substring(2));
    		// 返回子字符序列,第一个参数指定起始点,第二个参数
    		// 指定结束点。(包括起始点,不包括结束点)
    		System.out.println(s.substring(2, 5));
    		// 使用当前的字符序列,连接参数字符序列,返回连接
    		// 之后的结果。(用的不多)
    		System.out.println(s.concat("1234"));
    		// 使用第二个参数替换第一个参数,返回替换之后的结果。
    		System.out.println(s.replace('b', 'x'));
    		System.out.println("abcabc".replace('b', 'x'));
    		System.out.println(s.replace("ab", "xyz"));
    		// 返回参数在当前对象中首次出现的位置。如果没有出现,
    		// 返回-1。
    		System.out.println(s.indexOf("bc"));
    		System.out.println(s.indexOf("kk"));
    		// 返回参数在当前对象中最后一次出现的位置。如果没有出现,
    		// 返回-1。
    		System.out.println(s.lastIndexOf("kk"));
    		// 去除字符序列两端的空格,返回去除之后的结果。
    		System.out.println("   a    b    ".trim());
    		// 返回当前对象的大写形式。
    		System.out.println(s.toUpperCase());
    		// 返回当前对象的小写形式。
    		System.out.println(s.toLowerCase());
    		String[] keys = "2016-10-15".split("-");
    		for (String key : keys) {
    			System.out.println(key);
    		}
    		// 判断当前对象是否包含参数指定的对象,如果包含,返回
    		// true,否则返回false。
    		System.out.println(s.contains("cd"));
    		System.out.println(s.indexOf("cd") >= 0);
    	}
    
    }
    

      7、

    /*
     * String类是非可变类,String对象一经创建,
     * 就不能进行修改。
     * 在String类中,所有看似修改String字符序列的方法
     * (toUpperCase,substring等),都是在新创建的对象
     * 上进行的,而没有修改原有的String对象。
     */
    package day11;
    
    public class StringTest2 {
    
    	public static void main(String[] args) {
    		String s = "abc";
    		s = "def";
    		System.out.println(s);
    		System.out.println(s.toUpperCase());
    		System.out.println(s);
    	}
    
    }
    

      8、String常量池

    /*
     * String常量池
     * String常量池用来维护编译期间的String常量。
     * 常量池初始为空,当出现编译期间的String常量时,首先会
     * 搜索String常量池,如果常量池中不存在该String对象,则
     * 将该String对象加入到常量池中,并返回该对象(起始地址)。
     * 如果该对象已经存在(根据String对象的equals方法),
     * 、则直接返回常量池中的String对象(不会再创建String对象)。
     * 
     * String常量池可以避免令我们创建重复的对象,因为String对象
     * 是不可改变的,因为我们只需创建一个,由所有需要的位置共享即可。
     * 
     */
    package day11;
    
    public class StringPool {
    
    	public static void main(String[] args) {
    		String s1 = "abc";
    		String s2 = "abc";
    		System.out.println(s1.equals(s2));
    		System.out.println(s1 == s2);
    
    		String s3 = new String("abc");
    		String s4 = new String("abc");
    		System.out.println(s3.equals(s4));
    		System.out.println(s3 == s4);
    
    		//编译器特征:能够在编译期间计算的结果,就不会
    		//等到运行时再去计算。
    		s1 = "ab" + "c";
    		//s1 = "abc";
    		s1 = "a" + "b" + "c";
    		final String t = "c";
    		s1 = "ab" + t;
    		System.out.println(s1 == s2);
    	}
    
    }
    /*
     * String常量池
     * String常量池用来维护编译期间的String常量。
     * 常量池初始为空,当出现编译期间的String常量时,首先会
     * 搜索String常量池,如果常量池中不存在该String对象,则
     * 将该String对象加入到常量池中,并返回该对象(起始地址)。
     * 如果该对象已经存在(根据String对象的equals方法),
     * 、则直接返回常量池中的String对象(不会再创建String对象)。
     * 
     * String常量池可以避免令我们创建重复的对象,因为String对象
     * 是不可改变的,因为我们只需创建一个,由所有需要的位置共享即可。
     * 
     */
    package day11;
    
    public class StringPool {
    
    	public static void main(String[] args) {
    		String s1 = "abc";
    		String s2 = "abc";
    		System.out.println(s1.equals(s2));
    		System.out.println(s1 == s2);
    
    		String s3 = new String("abc");
    		String s4 = new String("abc");
    		System.out.println(s3.equals(s4));
    		System.out.println(s3 == s4);
    
    		//编译器特征:能够在编译期间计算的结果,就不会
    		//等到运行时再去计算。
    		s1 = "ab" + "c";
    		//s1 = "abc";
    		s1 = "a" + "b" + "c";
    		final String t = "c";
    		s1 = "ab" + t;
    		System.out.println(s1 == s2);
    	}
    
    }
    

      9、equals与==

    /*
     * equals与==
     * equals是Object类中声明的方法,在Object类中,equals
     * 与==是没有任何区别的,因为Object类中,equals就是用==
     * 进行判断的。但是,Object类中equals比较可能过于严格,子类
     * 可以根据需要实现自己的比较方式。例如,String类重写了equals方法,
     * 只要两个String字符序列相当,则认为两个String对象就是相等的。
     * 
     * ==比较的永远是两个变量的值,当变量是引用类型时,比较的是两个
     * 引用的值是否相等,即对象的起始地址是否相等(两个对象是否是同一个
     * 对象。)
     */
    package day11;
    
    public class Equals {
    	public static void main(String[] args) {
    		String s = new String("abc");
    		String s2 = new String("abc");
    		System.out.println(s.equals(s2));
    		System.out.println(s == s2);
    	}
    }
    

      10、StringBuilder与StringBuffer

    /*
     * StringBuilder与StringBuffer
     * StringBuilder是非线程安全的,StringBuffer是
     * 线程安全的。我们应该首选(优先使用)StringBuilder。
     * 
     * String是非可变类,StringBuilder是可变类,对StringBuilder
     * 进行的一切修改操作,都是在原有对象上进行的,而没有创建新的
     * 对象。
     */
    package day11;
    
    public class StringBuilderTest {
    	public static void main(String[] args) {
    		StringBuilder s = new StringBuilder("abc");
    		// 不同与String,StringBuilder不支持直接赋值的形式。
    		// StringBuilder s2 = "abc";
    		// 将第二个参数指定的对象插入到第一个参数指定的位置上。
    		s.insert(2, "1234");
    		// 改变了原有的对象
    		System.out.println(s);
    		// 返回当前对象的长度。(以字符为单位)。
    		System.out.println(s.length());
    		// 返回StringBuilder对象的存储空间。
    		// 存储空间会随着字符的增加而自动扩容。
    		System.out.println(s.capacity());
    		// 转换成String对象。
    		System.out.println(s.toString());
    		// 删除指定区间的字符。第1个参数指定开始点,第2个参数
    		// 指定结束点。(包括起始点,不包括终止点。)
    		s.delete(0, 3);
    		System.out.println(s);
    		// 将参数指定的对象追加到当前StringBuilder对象
    		// 的尾部。
    		s.append("xyz");
    		System.out.println(s);
    		s.append("abc");
    		s.append("def");
    		// StringBuilder的delete,append等方法可以返回
    		// 当前的对象,因此,我们可以实现链式方法调用。
    		s.append("abc").append("def");
    
    	}
    
    }
    

      11、

    /*
     * String与StringBuilder
     * String是非可变类,String对象一经创建就不能再进行修改。
     * StringBuilder可变类,StringBuilder的对象可以改变。
     * 因为String对象是不可改变的,所以String对象可以在多线程
     * 并发访问时,安全的实现共享。但是,当我们频繁对String进行
     * 修改时,就会创建大量的临时对象,影响性能。此时,我们应该
     * 使用StringBuilder来代替String。
     */
    
    package day11;
    
    public class StringAndBuilder {
    	public static void main(String[] args) {
    		long start = System.nanoTime();
    		// System.currentTimeMillis();
    		String s = "";
    		// 使用String,会创建大量的临时对象
    		for (int i = 0; i < 1000; i++) {
    			s += "a";
    		}
    		long end = System.nanoTime();
    		System.out.println(end - start);
    
    		start = System.nanoTime();
    		StringBuilder b = new StringBuilder(1200);
    		for (int i = 0; i < 1000; i++) {
    			b.append("a");
    		}
    		// s = b.toString();
    		end = System.nanoTime();
    		System.out.println(end - start);
    	}
    }
    

      12、Math类中声明的成员都是静态的。

    /*
     * Math类中声明的成员都是静态的。
     */
    
    package day11;
    
    import static java.lang.Math.*;
    
    public class MathTest {
    	public static void main(String[] args) {
    		// 返回一个[0, 1)之间的随机小数(double)。
    		System.out.println(random());
    		// 返回绝对值
    		System.out.println(abs(-10));
    		System.out.println(Integer.MIN_VALUE);
    		System.out.println(abs(Integer.MIN_VALUE));
    		// 返回大于等于参数的最小整数。(向上取整)
    		System.out.println(ceil(3.2));
    		// 返回小于等于参数的最大整数。(向下取整)
    		System.out.println(floor(2.3));
    		// 返回两个参数中较大的一个。
    		System.out.println(max(5, 10));
    		// 返回两个参数中较小的一个。
    		System.out.println(min(5, 10));
    	}
    }
    

      13、Date

    package day11;
    
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateTest {
    
    	public static void main(String[] args) {
    		// 当前日期和时间
    		Date date = new Date();
    		System.out.println(date);
    		// 从1970-01-01 00:00:00所走过的毫秒数(参数指定)
    		Date date2 = new Date(10000000);
    		System.out.println(date2);
    		// 返回从1970-01-01 00:00:00到Date所表示
    		// 时间走过的毫秒数。
    		long time = date.getTime();
    		System.out.println(time);
    		// 设置时间(毫秒数)
    		date.setTime(30000);
    
    		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		// 对日期进行格式化
    		System.out.println(df.format(date));
    	}
    }
    

      14、Calendar

    package day11;
    
    import java.util.Calendar;
    import java.util.Date;
    
    public class CalendarTest {
    
    	public static void main(String[] args) {
    		// Calendar是抽象类,不能创建对象,通过getInstance
    		// 方法获得的是Calendar子类型的对象。
    		Calendar c = Calendar.getInstance();
    		System.out.println(c.get(Calendar.YEAR));
    		// 获取的月份从0开始。
    		System.out.println(c.get(Calendar.MONTH));
    		System.out.println(c.get(Calendar.DATE));
    		// 12小时制
    		System.out.println(c.get(Calendar.HOUR));
    		// 24小时制
    		System.out.println(c.get(Calendar.HOUR_OF_DAY));
    		System.out.println(c.get(Calendar.MINUTE));
    		System.out.println(c.get(Calendar.SECOND));
    		c.set(Calendar.YEAR, 1990);
    		c.set(1990, 7, 8);
    		c.set(1990, 7, 8, 15, 30, 30);
    		// 获取Date对象
    		Date d = c.getTime();
    	}
    
    }
    

      15、Random

    package day11;
    
    import java.util.Random;
    
    public class RandomTest {
    
    	public static void main(String[] args) {
    		Random r = new Random();
    		// 返回一个int类型的值。
    		System.out.println(r.nextInt());
    		// 返回一个0~参数范围,int类型的值。
    		// 包括0,不包括参数指定的上限
    		System.out.println(r.nextInt(30));
    		// 返回[0,1)之间的随机float值。
    		System.out.println(r.nextFloat());
    		// 返回[0,1)之间的随机double值。
    		System.out.println(r.nextDouble());
    	}
    
    }
    

      16、Scanner

    package day11;
    
    import java.util.Scanner;
    
    public class ScannerTest {
    
    	public static void main(String[] args) {
    		Scanner s = new Scanner(System.in);
    		// 手动设置分隔符。
    		// s.useDelimiter("*");
    		while (s.hasNext()) {
    			String str = s.next();
    			// 判断是否含有下一行
    			// s.hasNextLine();
    			// 获取下一行。
    			// s.nextLine();
    			// s.nextInt();
    			if (str.equals("q")) {
    				break;
    			}
    			System.out.println(str);
    		}
    		// 释放本地的资源。
    		s.close();
    	}
    
    }
    

      

  • 相关阅读:
    进程
    交换分区
    linux命令
    Linux进程
    开会
    今天的学习情况
    CentOS7.6 yum方式安装redis最新版
    Centos7 yum安装postgresql 9.5
    GitLab CI runner can't connect to tcp://localhost:2375 in kubernetes
    Server 2008 R2远程桌面授权,解决120天过期问题
  • 原文地址:https://www.cnblogs.com/liuwei6/p/6572477.html
Copyright © 2011-2022 走看看