`
mywebcode
  • 浏览: 988076 次
文章分类
社区版块
存档分类
最新评论

从温JavaSE基础知识的笔记

 
阅读更多

static 关键字

static静态代码区域、static修饰的成员变量: 他们有如下特点

1、static是一个修饰符,用于修饰成员,static修饰的成员被所有的对象所共享

2、会随着类的加载而加载,而且只加载一次,static优先于对象存在。

3、static修饰的成员变量有2种调用方式:类名调用:类名.变量名、对象调用

4、static修饰的数据是共享数据,对象存储的数据是特有数据

成员变量与静态变量的区别:

成员变量也叫实例变量

静态变量也叫类变量

静态变量使用的注意事项:

静态方法只能访问静态成员(成员方法,成员变量){静态方法不能使用this、super关键字}只能通过对象调用非静态方法

非静态方法可以访问静态方法,也可以访问非静态方法

构造函数与一般函数的区别:

构造函数:函数名与类名一致;分为无参构造函数、有参构造函数

初始化对象时被调用 eg:Person p = new Person();此时就会调用构造函数,没有构造函数时,会调用 默认构造函数

this关键字

this关键字使用的场景:就是在局部变量与成员变量重名时

因为局部变量与成员变量重名时(可以用this来区分)

this代表对象并且是代表当前对象

eg:

public class thisDemo {
    
	public static void main(String args[]){
		Person p=new Person("nini");
	}
	

}

class Person{
	private String name;
	private int age;
	
	Person(String name){
		this.name=name;
	}
	
	public void print(){
		System.out.println("name:"+name);
	}
}


4、强制类型转换关键

short s1 =s1+1 用什么错? short s1+=1,有什么错?

答:第一种方案有错,s1+1是int 类型的,需要强制转换

第二种方案可以正常编译,可以隐式转换

5、继承

类的修饰符的权限大小排列:

public〉〉〉〉abstract〉〉〉private

权限只能扩大不能缩小

Java仅支持单继承,不支持多继承(即:一个子类只有一个父类),但Java也支持多层继承、多重继承(B继承A, C继承B)

当子父类中出现成员函数一模一样的情况,会运行子类的函数,这种现象称为覆盖操作(即重写)。

函数的一个特性:

1、重载。同一个类中。overload

2、重写(覆盖)子父类中. override

重写注意事项:

1、子类方法覆盖父类的方法时,子类的权限必须大于等于父类的权限

2、静态方法只能覆盖静态方法

子父类的构造函数:

子类在实例化过程,子类的所有构造函数默认都会访问父类的无参构造函数

子类在构建对象时,发现访问子类构造函数,父类的无参构造函数也运行。


6、tcp协议和udp协议的差别TCP UDP是否连接 面向连接 面向非连接传输可靠性 可靠 不可靠应用场合 传输大量数据 少量数据速度 慢 快

逻辑运算

A......B..................A And B....A Or B........A Xor B
0......0.......................0..............0................0
1......0.......................0..............1................1
0......1.......................0..............1................1
1......1.......................1..............1................0

Java单例模式

package SingleDemo;


/*类的唯一性
 * 创建本类对象
 * 私有化构造方法
 * 有一个公开方法,方法类型是指向该类的
 * */

///不能被另一个类创建类对象引用,只能通过静态属性的类名调用
public class SingleTest {
	Single s1=Single.getInstance();
	Single2 s2=Single2.getInstance2();
      
}


/*单例模式  
 *   ————饿汉式   开发用
 * */
class Single{
	
	private static Single s =new Single();
	
	private Single(){}
	
	public static Single getInstance(){
		return s;
	}
}


/*单例模式
 * __————懒汉式  面试用,线程存在安全隐患
 * */
class Single2{
	
	private static Single2 s =null;
	
	private Single2(){}
	
	public static Single2 getInstance2(){
		if(s==null){
			s=new Single2();	
		}
		return s;
	}
}
/**
* @author Administrator
* 单例模式的懒汉模式(延迟加载单例模式)
*
*/
class Single2{ 
 
  private static Single2 s =null; 
  
  private Single2(){} 
  
  /**
  * @return
  */
  public static Single2 getInstance2(){
  	if(s==null){
	  	synchronized (Single2.class) {
	  	   if(s==null){ 
	  	      s=new Single2();   
	  	    }
			}
  	}
 
    return s; 
  } 
}


IO流基础知识:

package com.bishi.demo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class IODemo {
	
	public static void main(String args[]) throws IOException{
		
		xie();///复杂写法
		
		/*将键盘(控制台)输入的内容,输出到控制台中*/
		BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));
		
		/*将文件的内容读取到控制台中*/
		BufferedReader bufr2=new BufferedReader(new InputStreamReader(new FileInputStream("D://xuan.txt")));
		BufferedWriter bufw2=new BufferedWriter(new OutputStreamWriter(System.out));
		
		
		/*将键盘(控制台)输入,保存到文件中*/
		BufferedReader bufr3=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bufw3=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E://chan.txt")));
		
		/*将A文件中的内容,保存到B文件中*/
		BufferedReader bufr4=new BufferedReader(new InputStreamReader(new FileInputStream("D://xuan.txt")));
		BufferedWriter bufw4=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E://chan.txt")));
	    
		String line=null;
		while((line=bufr.readLine())!=null){
			if(line.equals("over")){
				break;
			}
			bufw.write(line);
			bufw.newLine();///换行
			bufw.flush();//刷新
			
		}
		
	}

	private static void xie() throws IOException {
		InputStream in=System.in;///控制台输入的字节流
		
		///将控制台输入的字节流转为字符流
		InputStreamReader isr=new InputStreamReader(in);
		
		///缓存区  ,缓冲区放的是字符流 ,不是字节流
		BufferedReader bufr=new BufferedReader(isr);
		
		String line=null;
		
		OutputStream out =System.out;///控制台输出
		///将字符转为字节流
		OutputStreamWriter osw=new OutputStreamWriter(out);
		
		///输出缓存区 缓冲区放的是字符流 ,不是字节流
		BufferedWriter bufw=new BufferedWriter(osw);
		
		
		
		
		while((line=bufr.readLine())!=null){
			if(line.equals("over")){
				break;
			}
			bufw.write(line);
			bufw.newLine();///换行
			bufw.flush();//刷新
			
		}
	}

}

线程

同步好处(synchronized):解决线程安全问题

同步弊端(synchronized):相对降低了效率,因为同步外的线程,都会判断同步锁

字符串反转:

	public static void main(String[] args){
		
		StringBuffer sb=new StringBuffer();
		String str="abxhdgsb";
		sb.append(str);
		System.out.println("===原字符==="+str);
		System.out.println("===字符反转==="+sb.reverse());
	}


把时间格式转为毫秒

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

  String str = "201104141302";
  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmm");
  
  long millionSeconds = sdf.parse(str).getTime();//毫秒

  System.out.println(millionSeconds);
 }
}


防止中文乱码

 String desc = "djkcds1234!~,你好我们asdc很好";
    String d = new String(desc.getBytes("ISO-8859-1"), "UTF-8");
    System.out.println("desc: " + d);


处理出现中文乱码的拦截器

<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics