Day11(java基础知识)学习记录

大纲:

Day11(java基础知识)学习目标

【学习目标】理解、了解、应用、记忆

通过今天的学习,参训学员能够:(解释的时候说出二级目标的掌握程度)

  1. 【理解】static静态关键字
  1. 【理解】能够独立阐述静态的定义和特点
  2. 【理解】能够独立阐述静态的注意事项
  3. 【理解】能够独立阐述静态的优缺点
  4. 【应用】能够自定义一个工具类并使用
  1. 【理解】代码块
  1. 【理解】能够在类中独立定义构造代码块
  2. 【应用】能够在类中独立定义静态代码块
  3. 【理解】能够理解构造代码块和静态代码块的执行流程

收获:

一:静态static的调用

package com.itheima_01;
/*
 * static:是一个关键字,用于修饰成员变量和成员方法
 * static的特点:
 * 			被所有的对象所共享
 * 			可以使用类名调用
 * 			静态的加载优先于对象
 * 			随着类的加载而加载
 * 
 */
public class StaticDemo {
	public static void main(String[] args) {
		Person.graduateFrom = "传智学院";
		
		Person p = new Person();
		p.name = "小苍同学";
		p.age = 18;
		//p.graduateFrom = "传智学院";
		p.speak();
		
		Person p2 = new Person();
		p2.name = "小波同学";
		p2.age = 20;
		//p2.graduateFrom = "传智学院";
		p2.speak();
	}
}

class Person {
	String name;
	int age;
	static String graduateFrom;//毕业院校
	
	public void speak() {
		System.out.println(name + "---" + graduateFrom);
	}
}

二static的注意事项:


 *  静态方法:
 *  可以调用静态的成员变量
 *  可以调用静态的成员方法
 *  不可以调用非静态成员变量
 *  不可以调用非静态成员方法
 *  静态方法只能调用静态的成员
 *  非静态方法:
 *  可以调用静态的成员变量
 *  可以调用静态的成员方法
 *  可以调用非静态的成员变量
 *  可以调用非静态的成员方法
 * 
 *  静态的方法中是否有this这个对象?没有的

Math类使用

package com.itheima_03;

public class MathDemo {
public static void main(String[] args) {
	System.out.println(Math.PI);
	System.out.println(Math.abs(-14));
	
	System.out.println(Math.ceil(1.2));
	System.out.println(Math.floor(1.2));
	
	System.out.println(Math.round(1.2));
	System.out.println(Math.round(1.6));
	
	System.out.println(Math.max(3, 4));
	
	System.out.println(Math.pow(2, 4));
	// 返回一个随机数,大于零且小于1
	System.out.println(Math.random());
}
}

四 自定义工具类

package com.itheima_03;
public class MyArrays {
	private MyArrays() {} 

	public static int getMax(int[] arr) {
		int max = 0;//参照物
		//遍历数组
		for(int x = 0;x < arr.length;x++) {
			if(arr[x] > max) {
				max = arr[x];//替换参照物
			}
		}
		
		return max;
	}
		
	public static int getIndex(int[] arr,int a) {
		//遍历数组
		for(int x = 0;x < arr.length;x++) {
			if(arr[x] == a) {
				return x;
			}
		}
		
		return -1;//如果查不到制定的参数,则返回-1
	}
}
package com.itheima_03;

public class MyArraysDemo {
	public static void main(String[] args) {
		int[] arr = {3,5,8,10,1};
		int max = MyArrays.getMax(arr);
		System.out.println(max);
		
		int index = MyArrays.getIndex(arr, 8);
		System.out.println(index);
		
		
	}
}

五静态代码块

package com.itheima_04;

public class BlockDemo {
public static void main(String[] args) {
	
    Teacher t = new Teacher();
    Teacher t2 = new Teacher("小苍老师",18);
}
}
class Teacher{
	String name;
	int age;
	
   static {    // 注意这里没有static 调用的区别
	   System.out.println("我爱java");
   }
	public Teacher() {
		System.out.println("我是无参空构法");
	}
	
	public Teacher(String name,int age) {
		System.out.println("我是有参构造法");
		this.name = name;
		this.age = age;
	}
		
	
}

六:理解构造代码块和静态代码块的执行流程

package com.itheima_04;

/*
 *   Coder静态代码块执行 --- Coder构造代码块执行 --- Coder无参空构造执行
 *   
 *   
 *   BlockTest静态代码块执行 --- BlockTest的主函数执行了 --- Coder静态代码块执行 --- Coder构造代码块执行 --- Coder无参空构造执行
 *   Coder构造代码块执行 --- Coder无参空构造执行
 * 
 */
public class BlockTest {
	static {
		System.out.println("BlockTest静态代码块执行");
	}
	
	{
		System.out.println("BlockTest构造代码块执行");
	}
	

	public BlockTest(){
		System.out.println("BlockTest无参构造执行了");
	}
	
	public static void main(String[] args) {
		System.out.println("BlockTest的主函数执行了");
		Coder c = new Coder();
		Coder c2 = new Coder();
	}
}

class Coder {
	
	static {
		System.out.println("Coder静态代码块执行");
	}
	
	{
		System.out.println("Coder构造代码块执行");
	}
	
	public Coder() {
		System.out.println("Coder无参空构造执行");
	}	
	
}

猜你喜欢

转载自blog.csdn.net/qq_42198024/article/details/88614287