java基础知识回顾

java常用API:

StringBuffer:

 1.      StringBuffer和String的区别:   http://blog.csdn.net/rmn190/article/details/1492013

 2.      常用方法:  构造: StringBuffer();StringBuffer(CharSequence seq); 

  StringBuffer(String str);至于CharSequence和String还不是很懂,后面在看看

        其他:append();reverse();replaceAll();insert()  

Runtime:使用静态方法:getRuntime()实例化

                 常用方法:gc();tatalMemory();maxMemory();freeMemory();

                 进程销毁:destroy();exec()

System:gc(),等同于runtime的gc()进行垃圾回收;

               finalize(),对象被回收之前调用的方法;

Math:round(),random()以及其他的一些数学操作方法;

BigInteger:大整数操作类

BigDecimal:大小数操作类

Date:日期操作类new Date();

Calendar:采用手工的方式取得日期,可以通过此类精确到毫秒

                  Calendar.MONTH;Calendar.DATE; Calendar.HOUR_OF_DAY; Calendar                  Calendar.MINUTE; Calendar.SECOND; Calendar.MILLISECOND

SimpleDateFormat:

代码一:

import java.text.SimpleDateFormat;
import java.util.Date;
public class test5 {
  public static void main(String[] args)throws Exception {
 String str =  "2009-12-24 11:51:57.500";
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
 Date date = sdf.parse(str);
 System.out.println("格式化后的日期:"+date);
}
}

 代码二:

import java.text.SimpleDateFormat;

import java.util.Date;

public class test6 {

public static void main(String[] args) throws Exception {

    String oldDate = "2009-12-24 11:51:57.500";

    String newDate = null;

    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒");

    Date date = sdf1.parse(oldDate);

    System.out.println("格式化前的日期: "+ date);

    newDate = sdf2.format(date);

    System.out.println("格式化后的日期: "+ newDate);

}

}

                    注意就是下面两个函数: StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) ;

                                                              Date parse(String text, ParsePosition pos);

Arrays:sort()对数组排序;fill()对数组内容进行填充

comparable接口:

  import java.security.Permissions;

  import java.util.Arrays;

  class Person implements Comparable<Person> {

    private String name;

    private int age;

    public Person() {

    }

    public Person(String name, int age) {

       this.name = name;

       this.age = age;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }

    @Override

    public String toString() {

       return "姓名: " + this.name + ",年龄: " +this.age;

    }

    @Override

    public int compareTo(Person o) {

       if (this.age > o.age) {

           return 1;

       } else if (this.age < o.age) {

           return -1;

       } else {

           return 0;

       }

    }

}

public class test7 {

    public static void main(String[] args) {

       Person per[] = { new Person("张三", 20), new Person("李四", 19),

              new Person("王五", 23) };

       Arrays.sort(per);

       for (int x = 0; x < per.length; x++) {

           System.out.println(per[x]);

       }

    }

}

Pattern类:

代码一:

 import java.util.regex.Pattern;

public class test8 {

    public static void main(String[] args) {

       String str = "asd234fasdfdfdd23423423asdf";

       Pattern pat = Pattern.compile("\\d+");

       String s[] = pat.split(str);

       for (int x = 0; x < s.length; x++) {

           System.out.println(s[x]);

       }

    }

}

代码二:

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class test9 {

public static void main(String[] args) {

    String str = "11-234-45";

    Pattern pat = Pattern.compile("\\d{2}-\\d{3}-\\d{2}");//定义模式

    Matcher mat = pat.matcher(str);//整个内容和模式匹配

    if(mat.matches()){

       System.out.println("验证通过,内容和模式匹配");

    }

}

}

代码三:字符串的替换

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class test10 {

public static void main(String[] args) {

  String str = "aad2424fas626df23432sdfa2d22s2asdff";

  Pattern pat = Pattern.compile("\\d+");

  Matcher mat=pat.matcher(str);

  System.out.println(mat.replaceAll("A"));//把连续的数字替换成A

}

}

String类和正则的结合:

代码一:

public class test11 {

public static void main(String[] args) {

    String email = "aa@aa.com";

    if(email.matches("\\w+@\\w+\\.\\w+")){

       System.out.println("验证通过");

    }

}

}

代码二:

public class test12 {

 public static void main(String[] args) {

    String ip = "192.168.1.2";

    String s[] = ip.split("\\.");

    for(int x=0;x<s.length;x++){

       System.out.println(s[x]);

    }

}

}

java网络编程:

代码一:

import java.io.PrintStream;

import java.net.ServerSocket;

import java.net.Socket;

public class test13 {

public static void main(String[] args) throws Exception{

    ServerSocket server = new ServerSocket(9999);//在9999端口监听

    System.out.println(" 等待客户端的连接");

    Socket client = server.accept();//ServerSocket的accept()返回一个Socket对象

    //执行到这里就进行等待

    PrintStream out = new PrintStream(client.getOutputStream());//PrintStream传入outputstream的对象实例化

    out.print("hello world");

    out.close();

    client.close();

    server.close();

}

}

对应网络编程可以分为客户端开发和服务器,还可以加入多线程.先暂时这样哈.

java1.5新特性:

1、可以静态导入,例:import static java.long.Math.*;

2、可变参数,例如:

Package cn.itcast.day1;

   public class varableParameter {

    public static void main(String[] args) {

           System.out.println(add(1,2,3,4,5));

    }

    public static int add(int x,int ... args){

       int sum=x;

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

           sum+=args[i];

       }

       return sum;

    }

}

3、for循环加强,for(type 变量名: 集合变量名){……} 例如:

      ps:集合变量可以是数组或是实现了Iterable接口的集合类

4、自动装箱与拆箱

      享元模式:很多很小的对象有很多相同的元素那么可以定义为一个对象,不同的元素当做外部属性做为方法的参数传入

5、枚举:定义变量时,变量不能取规定范围以外的值

package cn.itcast.day1;

//枚举测试

public class EnumTest {

    public static void main(String[] args) {

       WeekDay weekDay=WeekDay.MON;

       System.out.println(weekDay.nextDay());

    }

}

 abstract class WeekDay {

    private WeekDay(){}

    public final static WeekDay SUN=new WeekDay(){

       public WeekDay nextDay() {

           return MON;

       }};

    public final static WeekDay MON=new WeekDay(){

       public WeekDay nextDay() {

           return SUN;

       }};

    public abstract WeekDay nextDay();

    /*public WeekDay nextDay(){    //以上代码用使用抽象方法定义nextDay将大量的if…else语句转移成一个个独立的类

       if(this==SUN){

           return MON;

       }

       else{

           return SUN;

       }

    }*/

    public String toString(){

       return this==SUN?"SUN":"MON";

    }

}

枚举的基本应用:

package cn.itcast.day1;

public class EnumTest1 {

    public static void main(String[] args) {

    WeekDay weekDay=WeekDay.FRI;

       System.out.println(weekDay);

       System.out.println(weekDay.name());

       System.out.println(weekDay.ordinal());

       System.out.println(weekDay.valueOf("SUN").toString());

       System.out.println(weekDay.values().length);//weekDay.values()是一个数组

    }

    public enum WeekDay{

       SUN,MON,TUE,WEN,THI,FRI,SAT

    }

}

 带构造方法的枚举:

    public enum WeekDay{

       SUN(1),MON,TUE,WEN,THI,FRI,SAT;//所有代码都必须放在列表之后

       private WeekDay(){System.out.println("first");}

       private WeekDay(int day){System.out.println("second");}

    }

 带抽象类的复杂枚举:

public enum TrafficLamp{

       RED(30){

           public cn.itcast.day1.EnumTest1.TrafficLamp TrafficLamp() {

              return GREEN;

           }

       },GREEN(45){

           public cn.itcast.day1.EnumTest1.TrafficLamp TrafficLamp() {

              return YELLOW;

           }         

       },YELLOW(5){

           public cn.itcast.day1.EnumTest1.TrafficLamp TrafficLamp() {

              return RED;

           }         

       };

       public abstract TrafficLamp TrafficLamp();

       private int time;

       private TrafficLamp(int time){this.time=time;};

    }

6、 泛型:最大的特点是类中的属性类型由外部决定

           构造方法中使用泛型; 泛型的擦除;泛型的通配符;

  class Point<T>{

    private T x;

    private T y;

   

    public Point() {

    }

    public  Point(T x, T y) {

       super();

       this.x = x;

       this.y = y;

    }

    public T getX() {

       return x;

    }

    public void setX(T x) {

       this.x = x;

    }

    public T getY() {

       return y;

    }

    public void setY(T y) {

       this.y = y;

    }

   

}

public class test16 {

 public static void main(String[] args) {

    Point<Object> p1 = new Point<Object>();

    Point<Integer> p2 = new Point<Integer>();

    //p1=p2//不能相互转换

    fun(p1);

    fun(p2);

}

 public static void fun(Point<?> po){

     //po.setX("hello");//不能设值

     System.out.println(po.getX());

     System.out.println(po.getY());

 }

 }

泛型的上限<? extends 类>;泛型的下限<? super 类>;

泛型接口

代码一:

interface Demo<T>{

    public void print(T param);

}

class DemoImpl1<T> implements Demo<T>{

    public void print(T param){

       System.out.println("param: "+ param);

    }

}

public class test1 {

    public static void main(String[] args) {

    Demo<String> demo = new DemoImpl1<String>();

    demo.print("hello");

    }

}

代码二:

interface Demo<T>{

    public void print(T param);

}

class Demoimpl2 implements Demo<Demoimpl2>{

    public void print(Demoimpl2 param){

       System.out.println("param :"+param);

    }

    public String toString(){

       return "helloworld";

    }

}

public class test2 {

 public static void main(String[] args) {

    Demo<Demoimpl2> demo = new Demoimpl2();

    demo.print(new Demoimpl2());

}

}

     泛型方法;泛型的嵌套设置;先不贴代码了;

7、注解:直接贴代码是最好的

package cn.itcast.day2;

@ItcastAnnotation(color="red",value="123",arrayAttr={1,2,3})

public class AnnotationTest {

     @SuppressWarnings("deprecation")

    @ItcastAnnotation("xxx")

    public static void main(String[] args) {

       System.runFinalizersOnExit(true);

       if(ItcastAnnotation .class.isAnnotationPresent(ItcastAnnotation.class)){

           ItcastAnnotation annotation=ItcastAnnotation .class.getAnnotation(ItcastAnnotation .class);

           System.out.println(annotation.color());

           System.out.println(annotation.value());

           System.out.println(annotation.arrayAttr().length);

       }

    }

    @Deprecated

    public static void sayHello(){

       System.out.println("hi,传智播客");

    }

}

 package cn.itcast.day2;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)//元注解:注解的注解;同理:元信息,元数据类似

@Target({ElementType.METHOD,ElementType.TYPE})

public @interface ItcastAnnotation {

    String color() default "bule";

    String value();

    int[] arrayAttr() default {3,4,5};

}

 

 其他知识点:

反射:

 package cn.itcast.day1;

import java.lang.reflect.*;

public class ReflectTest {

    public static void main(String[] args) throws Exception {     

           String startingClassName=args[0];//Main方法接收的字符串对象(另一个类的类名)

           Method mainMethod=Class.forName(startingClassName).getMethod("main",String[].class);//获得另一个类的mian方法

           mainMethod.invoke(null,new Object[]{new String[]{"11","22","33"}});/*创建另一个类的参数为Object[]{new String[]{"11","22","33"}}的静态的main方法,这里的new String[]{"11","22","33"}会被拆开解释为三个字符串对象,使用Object[]{}包含后被拆开解释为一个数组对象。替换为mainMethod.invoke(null,(Object)new String[]{"11","22","33"});也可以实现*/

    }

}

class TestArguments{

    public static void main(String [] args){

       for(String arg:args){

           System.out.println(arg);

       }     

    }

}

 类加载器:

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值