Java总结之基础篇

 

目录

1.基本类型

1.1储存空间

1.2char

2.运算符

2.1三目运算符

2.2运算符优先级

2.3 "equals()"与 "=="

3.String

4.数组

4.1创建写法

4.2数组操作代码

4.3自定义类数组

5.面向对象

5.1重载与重写

5.2单例模式

5.3抽象类与接口

6.一些实用类

6.1Date类

6.2Calender类

6.3UUID类


1.基本类型

1.1储存空间

字节型  
byte 1字节
整型
short 2字节
int 4字节
long 8字节
浮点型
float 4字节
double 8字节
字符型
char 2字节
布尔型
Boolean 1字节

1.2char

1.2.1 char a ='\ u0041'可表示一个汉字,基于原始的Unicode规范

1.2.2 char a = 99 

一个可以直接比较:

char a = 99;
if (a < 'z' && a > 'a') {
    System.out.println(a);
}

2.运算符

2.1三目运算符

布尔表达式?表达式1:表达式2

练习:

当x> 0:sgn(x)= 1;

当x = 0:sgn(x)= 0;

当x <0:sgn(x)= - 1;

输入X,输出SGN(X)的值。

public static void function04(){
	System.out.println("请输入x的值:");
	Scanner scan = new Scanner(System.in);
	int x = scan.nextInt();
	System.out.println("sgn(x)=" + (0==x?0:(x>0?1:-1)));
}

2.2运算符优先级

'  {}  '>'  ++  '>'(强制类型转换)'>'  /  '>'  +   '>'  <<  '>'  > =  '>'  ==  '>'  &  '>'  ^  '>'  |  '>'  &&  '>'  ||  ' >'  ?:   '>'  =  '

2.3 "equals()"与 "=="

equals

注意:equals方法不能作用于基本数据类型的变量。

如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

==

如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

如果作用于引用类型的变量,则比较的是所指向的对象的地址。

3.String

/**
 * 1:输出字符串"HelloWorld"的字符串长度
 * 2:输出"HelloWorld"中"o"的位置
 * 3:输出"HelloWorld"中从下标5出开始第一次出现"o"的位置
 * 4:截取"HelloWorld"中的"Hello"并输出
 * 5:截取"HelloWorld"中的"World"并输出
 * 6:将字符串"  Hello   "中两边的空白去除后输出
 * 7:输出"HelloWorld"中第6个字符"W"
 * 8:输出"HelloWorld"是否是以"h"开头和"ld"结尾的。
 * 9:将"HelloWorld"分别转换为全大写和全小写并输出。
 */
public class Test01 {
	public static void main(String[] args) {
		String str = "HelloWorld";
		test1(str);
	}
	public static void test1(String str){
		System.out.println(str.length());
	}
	public static void test2(String str){
		System.out.println(str.indexOf('o'));
	}
	public static void test3(String str){
		System.out.println(str.indexOf('o', 5));
	}
	public static void test4(String str){
		System.out.println(str.substring(0,5));//substring()内取右不取左
	}
	public static void test5(String str){
		System.out.println(str.substring(5));
	}
	public static void test6(String str){
		System.out.println(str.trim());
	}
	public static void test7(String str){
		System.out.println(str.charAt(5));
	}
	public static void test8(String str){
		System.out.println(str.startsWith("h")+"\n"+str.endsWith("ld"));
	}
	public static void test9(String str){
		System.out.println(str.toLowerCase()+"\n"+str.toUpperCase());
	}

}

4.数组

4.1创建写法

int[] arr = new int[10]; //初始化

int[] arr = {1,2,3,4,5}; //初始化并赋值

int[] arr1 = new int[] {1,2,3,4,5};

4.2数组操作代码

//复制数组
int[] aa=new int[3];
for(int i=0;i<3;i++){
	aa[i]=1;
}
int[] bb=Arrays.copyOf(aa, 4);
//1 1 1 0

bb=Arrays.copyOf(aa, 4);
//数组升序快排
int[] a={1,4,-1,5,0};
Arrays.sort(a);

//二分查找
String str[] = new String[]{"ab", "cd", "ef", "yz"};//定义String型数组str
Arrays.sort(str);//对数组进行排序
int index = Arrays.binarySearch(str, 0, 2, "cd");//在制定范围内搜索元素“cd”的索引位置

//将Array转化成Set集合
Set<String> set = new HashSet<String>(Arrays.asList(stringArray));
System.out.println(set);
//[d, e, b, c, a]

//数组翻转
int[] intArray = { 1, 2, 3, 4, 5 };
ArrayUtils.reverse(intArray);
System.out.println(Arrays.toString(intArray));
//[5, 4, 3, 2, 1]

//从数组中移除一个元素
int[] intArray = { 1, 2, 3, 4, 5 };
int[] removed = ArrayUtils.removeElement(intArray, 3);//create a new array
System.out.println(Arrays.toString(removed));

//将一个int值转化成byte数组
byte[] bytes = ByteBuffer.allocate(4).putInt(8).array();
for (byte t : bytes) {
    System.out.format("0x%x ", t);
}

//检查数组中是否包含某一个值
String[] stringArray = { "a", "b", "c", "d", "e" };
boolean b = Arrays.asList(stringArray).contains("a");
System.out.println(b);
// true

//连接两个数组
int[] intArray = { 1, 2, 3, 4, 5 };
int[] intArray2 = { 6, 7, 8, 9, 10 };
// Apache Commons Lang library
int[] combinedIntArray = ArrayUtils.addAll(intArray, intArray2);

//将数组中的元素以字符串的形式输出
String j = StringUtils.join(new String[] { "a", "b", "c" }, ", ");
System.out.println(j);

4.3自定义类数组

static Person[] aa = new Person[N];

for(int i=0;i<N-1;i++){

    aa[i]=new Jugdment();Person();

    赋值操作;

}

即必须每个类数组元素使用前都应该先初始化!

5.面向对象

5.1重载与重写

比较项目

重载

覆写/重写

英文名

Overload

Override

函数签名

只要求函数的参数个数或类型不一致,对返回值没要求

函数的参数个数,类型,返回值都必须完全一样。

发生地方

同一个类或者具有继承关系的两个类中

只能发生在继承关系的两个类中

访问权限

没有限制

子类覆写方法的访问权限必须大于或等于父类的方法的访问权限

5.2单例模式

//懒汉
public class demo {
	public static void main(String[] args) {
		test1 s = test1.get();
		System.out.println(s);
	}
}
class test1 {
	private static test1 s = new test1();
	public static test1 get() {
		return s;
	}
}

//饿汉(推荐)
public class demo1 {
	public static void main(String[] args) {
		test2 s = test2.get();
		System.out.println(s);
	}
}
class test2 {
	private static test2 s;
	public static test2 get() {
		if (s == null) {
			s = new test2();
		}
		return s;
	}
}
//懒汉式是延时加载, 懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的,
他是在需要的时候才创建对象,而饿汉式在虚拟机启动的时候就会创建。

5.3抽象类与接口

抽象类是用来捕捉子类的通用特性的。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
    abstract void service(ServletRequest req, ServletResponse res);
}
//继承抽象类,实现抽象方法
public class HttpServlet extends GenericServlet {
    void service(ServletRequest req, ServletResponse res) {
        // implementation
    }
}

接口的英文抽象艺术方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法接口。只是一种形式,接口自身不能做任何事情。

public interface Externalizable extends Serializable {
    void writeExternal(ObjectOutput out) throws IOException;
    void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
}
//继承并实现接口的方法
public class Employee implements Externalizable {
    int employeeId;
    String employeeName;

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeInt(employeeId);
        out.writeObject(employeeName);
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        employeeId = in.readInt();
        employeeName = (String) in.readObject();
    }
}

什么时候使用抽象类和接口

  • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。

  • 如果你想实现多重继承,那么你必须使用接口。由于Java的不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。

  • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

6.一些实用类

6.1Date类

//1.日期格式化输出
public static void name1() {
		Date aaData = new Date();
		DateFormat aa = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		String string = aa.format(aaData);
		System.out.println(string);
	}
//2018-07-19 21:35

//2.用户输入日期字符串,解析成Date 并打印。
public static void name2() {
	System.out.println("请输入日期:如2018-07-18");
	Scanner scanner = new Scanner(System.in);
	String ss = scanner.nextLine().trim();
	try {
		SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
		Date date = format1.parse(ss);
		System.out.println("Date:"+date);
		String string = format1.format(date);
		System.out.println("Date:"+string);
	} catch (ParseException e) {
		e.printStackTrace();
	}
}
//键入2018-07-18
//Date:Wed Jul 18 00:00:00 CST 2018
//Date:2018-07-18

//3.计算你们在一起多少天了。
static void function06() throws Exception{
		System.out.println("请你们认识的日期:如2018-07-18");
		Scanner scan = new Scanner(System.in);
		String str = scan.nextLine().trim();
		
		SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
		Date date = format1.parse(str);//相遇日期
		long t = date.getTime();
		
		Date date1 = new Date();//当前日期
		long t1 = date1.getTime();
		long s = t1 - t;
		
		long days = s/1000/60/60/24;
		if(days<0) {
			System.out.println("你的女票将在"+(-days)+"天后出现,请注意查收。");
		}else {
			System.out.println("你们已经认识"+days+"天。");
		}
	}
//today:2018-07-19
//键入2018-07-10
//你们已经认识9天。

6.2Calender类

//显示当前时间
public class Calendar_ {
	public static void main(String[] args) {
		function02();
	}
	static void function02(){
		Calendar  c = Calendar.getInstance();
		System.out.println(c);
		//显示设置的时间
		//c.set(2099, 1, 9, 9, 9);	
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH)+1;//month从0开始
		int day = c.get(Calendar.DAY_OF_MONTH);
		int hour = c.get(Calendar.HOUR_OF_DAY);
		int m = c.get(Calendar.MINUTE);	
		System.out.println(year+"年"+month+"月"+day+"日"+hour+"点"+m+"分");		
	}
}
//2018年7月20日9点30分

6.3UUID类

// 生成一个id
public static String createId() {
	UUID uid = UUID.randomUUID();
	String userId = uid.toString();
	String id = userId.replace("-", "");
	return id;
}
//80e1146c3c7344dd9b957be907056c8f

猜你喜欢

转载自blog.csdn.net/qq_38815856/article/details/81104898