java基础补充

Scanner类的使用

从键盘获取不同类型的变量:需要使用Scanner类

具体实现步骤:

1.导包:import java.util.Scanner;

2.Scanner的实例化:Scanner scan = new Scanner(System.in);

3.调用Scanner类的相关方法,获取制定指定的变量

//1.导包:import java.util.Scanner;
import java.util.Scanner;
class ScannerTest {
	public static void main(String[] args) {
		//2.Scanner 的实例化
		Scanner scan = new Scanner(System.in);
		//3.调用Scanner类的相关方法
		System.out.println("姓名");
		String name = scan.next();
		System.out.println(name);

		System.out.println("年龄");
		int age = scan.nextInt();
		System.out.println(age);
		
		System.out.println("体重");
		double weight = scan.nextDouble();
		System.out.println(weight);

		System.out.println("是否要和我谈恋爱?true/false");
		boolean isLove = scan.nextBoolean();
		System.out.println(isLove);
		//对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串
		System.out.println("性别");
		String sex = scan.next();
		char sexChar = sex.charAt(0);//获取索引位置为0上的字符
		System.out.println(sexChar);
	}
}

衡量一个功能代码的优劣:

1.正确性

2.可读性

3.健壮性

4.高效率和低存储

属性赋值顺序

(1)默认初始化

(2)显式初始化

(3)构造器中初始化

(4)有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值

执行的先后顺序:(1)-(2)-(3)-(4)

JavaBean

1.JavaBean是一种java语言写成的可重用组件

2.所谓JavaBean,是指符合标准的java类

  • 类是公共的

  • 有一个无参的公共的构造器

  • 有属性,且有对应的get、set方法

可以对属性赋值的位置:

(1)默认初始化

(2)显式初始化

(3)构造器中初始化

(4)有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值

(5)在代码块中赋值

执行的先后顺序:(1)-(2)/(5)-(3)-(4)

java中的junit单元测试

步骤:

1.选中当前工程-右键:build path -add libraries - JUnit - 下一步

2.创建java类,进行单元测试

此时的java类要求:①此类是public的 ②此类提供公共的午餐的构造器

3.此类中声明单元测试方法

此类的单元测试方法,方法的权限是public,没有返回值,没有形参

4.此单元测试方法上需要声明注解:@Test,并在单元测试类中导入import org.junit.Test;

5.声明好单元测试方法后,就可以在方法体内测试相关的代码

6.写完代码以后,左键双击单元测试方法名,右键:run as - JUnit Tesy

说明:

1.如果执行没有任何异常:绿条

2.如果执行出现异常:红条

设计模式

1、设计模式的说明

1.1理解:设计模式时在大量的实践中总结和理论化之后的代码结构、编程风格、以及解决问题的思考方式。

1.2常用设计模式----23种经典的设计模式

2.单例模式

2.1要解决的问题:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。

优点:减少了系统性能开销

2.2具体代码的实现:

饿汉式:

class Bank{
	//1.私有化类的构造器
	private Bank() {
		
	}
	//2.内部创建类的对象
	//4.要求此对象也必须声明为静态的
	private static Bank instance = new Bank();
	//3.提供公共的静态方法,返回类的对象
	public static Bank getInstance() {
		return instance;
	}
}

使用了静态代码块的饿汉式:

class Order{
	//1.私有化类的构造器
	private Order() {
		
	}
	//2.内部创建类的对象
	//4.要求此对象也必须声明为静态的
	private static Order instance = null;
    static{
        instance = new Order();
    }
	//3.提供公共的静态方法,返回类的对象
	public static Order getInstance() {
		return instance;
	}
}

懒汉式:

class Order{
	//1.私有化类的构造器
	private Order() {
		
	}
	//2.内部创建类的对象
	//4.要求此对象也必须声明为静态的
	private static Order instance = null;
	//3.提供公共的静态方法,返回类的对象
	public static Order getInstance() {
		if(instance == null){
            instance = new Order();
        }
        return instance;
	}
}

线程安全的懒汉式:

public class BankTest {
}
class Bank{
    private Bank(){}
    private static Bank instance = null;

    public static Bank getInstance() {
//        方式一:效率差
//        synchronized (Bank.class) {
//            if (instance == null) {
//                instance = new Bank();
//            }
//            return instance;
//        }
//        方式二
        if (instance == null) {
            synchronized (Bank.class){
                if (instance == null) {
                    instance = new Bank();
                }
            }
        }
        return instance;
    }
}

2.3懒汉式、饿汉式对比

饿汉式:

  • 坏处:对象加载时间过长
  • 好处:饿汉式是线程安全的

饿汉式:

  • 好处:延迟对象的创建
  • 坏处:线程不安全

2.4应用场景:网站的计数器、应用程序的日志应用、数据库连接池等

标题总结:一叶知秋

public static void main(String[] args) {//方法体}

权限修饰符:private 缺省 protected public —>封装性

修饰符:static \ final \ abstract \ native 可以用来修饰方法

返回值类型:无返回值 / 有返回值–>return

方法名:需要满足便是福命名的规则、规范:“见名知意”

形参列表:重载 / 重写:参数的值传递机制:体现对象的多态性

方法体:体现方法的功能

内存结构:

在这里插入图片描述

进程可以细化为多个线程。

每个线程,拥有自己独立的:栈、程序计数器。

多个线程,共享同一个进程中的结构:方法区、堆。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值