java小白训练营day03-数据结构:jUnit+基本类型+包装类型+数组+对象

数据结构

java编程语言,程序
旧程序:两大核心组成:数据结构+算法(语言自身 c/java)
新程序:数据结构+算法(已经不是重点)+框架+架构
框架:mvc框架,新三大框架 springmvc+spring+mybatis
架构:分布式架构、微服务架构、开发运维一体化架构、大数据架构、人工智能

数据结构:
10+20
1)10怎么表达?20怎么表达? int a = 10; int b = 20; float c = 1.0;
数据结构,必须用合适的内容来承接
2)+怎么表达? 运算符(算法)
3)执行

java中数据机构分几类?

1)基本类型:8种基本类型,int,float
2)引用类型:除了基本类型就是引用类型,String

基本类型

4个整型,2个浮点,2个特殊
bit 比特0和1,1 byte=8 bit,8位
最小单位:计算机最小单位 bit,编程语言的最小单位 byte
10计算机怎么表达?二进制

1)byte 字节,1byte=2^8=256
2)short 短整型,2byte,2^16=65536
3)int 整型,4byte,2^32,42亿
4)long 长整型,8byte,2^64
5)float 单精度浮点数,4byte,2^32
6)double 双精度浮点数,8byte,2^64
7)char 字符型,2byte,2^16,1~4byte ASCII-UTF-8
8)boolean 布尔型,true/false 1byte,2^8

需求:100用什么类型存储?200用什么类型存储?

package cn.tedu.data;

import org.junit.Test;

//8个基本类型
public class TestPrimiry {
	@Test	//需求:100用什么类型 byte?200用什么类型 short?
	public void number() {
		//java中默认写一个整数,默认int类型
		//Type mismatch 类型不匹配
		//cannot convert from int to byte
		//byte b = (byte)200;		//强制转换 -56,256/2=128
		byte b = 100;
		System.out.println(b);
		short s = 200;
		System.out.println(s);
	}
}

包装类型

通过java得到所有基本类型的取值范围
基本类型不属于对象,它无法去得到额外方法,例如最大值和最小值。
java为把这些基本类型转化对象,而为它们提供包装类型,转化基本类型为对象。
有了这些包装类型,它会增强我们代码,会额外提供很多方法,开发更加快捷!
java对每个基本类型都进行封装,都有对应包装类型(8个)
1)byte Byte
2)short Short
3)int Integer
4)long Long
5)float Float
6)double Double
7)char Character
8)boolean Boolean

package cn.tedu.data;

import org.junit.Test;

//得到所有包装类型的取值的范围
public class TestScope {
	@Test
	public void scope() {
		//字节型取值范围:-128~127
		System.out.println("字节型取值范围:"
				+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
		
		//短整型取值范围:-32768~32767
		System.out.println("短整型取值范围:"
				+Short.MIN_VALUE+"~"+Short.MAX_VALUE);
		
		//整型取值范围:正负21亿
		System.out.println("整型取值范围:"
				+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
		
		System.out.println("长整型取值范围:"
				+Long.MIN_VALUE+"~"+Long.MAX_VALUE);
		
		//单精度浮点数范围:1.4E-45~3.4028235E38,科学计数法
		System.out.println("单精度浮点数范围:"
				+Float.MIN_VALUE+"~"+Float.MAX_VALUE);
		
		System.out.println("双精度浮点数范围:"
				+Double.MIN_VALUE+"~"+Double.MAX_VALUE);
	}
}

ASCII码表

预先定义“密码本”,把键盘上09,az。。。可见的字符和不可见都进行编码,总共128个字符
0~127。
char就有一个特性,'a’就可以97整数来替代。a是人类语言,97人类的语言,0110 0001机器的语言。
a转化97整数,整数可以转换为二进制,机器就可以识别。
相当于人类和机器语言互通。

ASCII表太小了,无法表达更复杂
西欧 ISO-8859-1 256字,英文,
中文 10w,6w GB2312/GBK 国标
全球的文字 unicode 字符集,编码方式UTF-16,UTF-32,UTF-8 压缩版(1~4)

有了ASCII码表人类就开启和计算机沟通交流的先河,主流unicode字符集,utf-8就是主流的编码方式,
它之前全球的语言。

数组

无论是基本类型,还是包装类型,它们都只能表达一个值
int i = 10;
Integer i = new Integer(10);
需求:表达一组值
这就是数组

package cn.tedu.data;

import java.util.Arrays;

import org.junit.Test;

//数组,属于引用类型,对象,对象初始值null
public class TestArray {
	@Test
	public void array() {
		//需求:科目:语文、数学、英语、物理、化学
		//1、数组的定义
		String[] courses = new String[5];
		//2、给数组的每个元素去设置值
		//获取第一个元素,下标方式,java下标从0开始
		System.out.println(courses[0]); 
		
		courses[0] = "语文";  //给第一个元素赋值
		System.out.println(courses[0]);
		
		courses[1] = "数学";
		courses[2] = "英语";
		courses[3] = "物理";
		courses[4] = "化学";
		System.out.println(courses[4]);
		
		//简洁定义和赋值一起方式,常用
		String[] c2 = {"语文","数学","英语","音乐","体育","歌舞"};
		System.out.println("数组长度:"+ c2.length);
		System.out.println("第一个元素:"+ c2[0]);
		
		//代码尽量不要写死
		System.out.println("最后一个元素:"+c2[c2.length - 1]);
		System.out.println("最后一个元素:"+c2[4]);
	}
	
	@Test
	public void grade() {
		//需求:语文100,数学90,英语60,物理80,化学98
		int[] g = {100,90,60,80,98};
		//1、总分
		int sum = g[0]+g[1]+g[2]+g[3]+g[4];
		System.out.println("总分:" + sum);
		
		//2、平均分
		int avg = sum/g.length;
		System.out.println("平均分:" + avg);
		
		//打印,默认打印不是内容,而是[I@1a84f40f,代表内存所在地址
		//每个机器打印的内存地址不同!
		System.out.println(g);
		//java提供专门操作数组的工具类:Arrays.toString()
		System.out.println( Arrays.toString(g));  //把数组变成字符串打印
		
		//排序后,原来的数组就被覆盖
		Arrays.sort(g); //升序
		System.out.println( Arrays.toString(g));
		
		//3、最高分,升序排序后,最后的值
		System.out.println("最高分:"+g[g.length-1]);
		
		//4、最低分,升序排序后,第一个的值
		System.out.println("最低分:"+g[0]);
	}
}

对象

在java中万物皆对象,对象是Java中一等公民
java中创建的类,都是Object的子类
java中如果创建一个类,明确声明extends Object,或者不写,java会默认就继承Object类。

?为什么java这么强调对象?为什么需要所有类都去继承 Object呢?
因为对象可以表达万物,java对Object增加了很多方法。toString() java直接提供。
1)基本类型和包装类型只能表达一个值(有局限)
2)数组只能表达一组一个类型的值(有局限)
人:姓名(字符串)、性别(布尔)、年龄(整型)、成绩(浮点数组)、儿子;表达万物,把生活中的都可以 抽象出来,使用计算机进行出来。
C语言面向过程设计思想,java语言面对对象的设计思想。

需求:人:姓名(字符串)、性别(布尔)、年龄(整型)

package cn.tedu.data.pojo;

//定义实体对象:人
/*
 * 标准结构有两部分:
 * 1)属性(字段):姓名、性别、年龄、地址
 * 2)方法(函数):吃、玩
 */
public class Person {
	//方法体内声明变量局部变量,类体内声明变量成员变量
	//属性(习惯大写,包装类型)
	public String name;	//姓名
	public Boolean sex;	//性别
	public Integer age;	//年龄
	public String address;	//地址
	
	//方法
	public void eat() {
		System.out.println("吃遍天下美食");
	}
	public void play() {
		System.out.println("玩遍天下无敌手");
	}
}







package cn.tedu.data;

//不在同一个目录,就需要导包
import org.junit.Test;

import cn.tedu.data.pojo.Person;

//测试类人,调用Person类
//蓝图:类,类定义
//实现:new 对象,创建实例 instance
//格式:类名 对象实例名称 = new 类名();
public class TestPerson {
	@Test
	public void obj() {
		//1.创建对象实例
		Person person = new Person();
		
		//2.给属性赋值,使用点操作符获取属性
		person.name = "詹姆士邦德";
		person.sex = true;	//true男false女
		person.age = 70;
		person.address = "英国伦敦军情六处";
		
		//3.访问属性
		System.out.println(person.name);
		System.out.println(person.sex);
		System.out.println(person.age);
		System.out.println(person.address);
		
		//4.调用方法,实例名称.方法名
		person.eat();
		person.play();
		
		//再创建对象
		Person p2 = new Person();
		p2.name = "邦德女郎";
		p2.age = 18;
		
		System.out.println(); //空行
		System.out.println(p2.name);
		System.out.println(p2.age);
		p2.play();
	}
}




小结

两种运行方式,main和junit有什么不同?

1)不能互相替代,main是java自身提供,它的本意是类进行执行。执行入口,不可替代
junit只测试而生,它不给用户,它只对开发者有效
2)在一个类中main方法只有一个,而单一测试方法很多。
3)main方法格式固定,方法名必须main;单元测试方法名随便起,不固定
4)运行的菜单,main菜单java application;单元测试 junit Test
5)main是java直接提供,junit是第三方公司提供

怎么使用Junit单元测试

1)找到jar支持,jar因为开发工具都支持,eclipse自带,使用@Test注解,在项目中只需要一次
2)在类中导包 import org.junit.Test; 导入Test.class
3)在测试方法上戴帽子 @Test
4)RunAs/Junit Test

基本类型

java中数据结构分类:2类,基本类型(8个),引用类型(非基本类型,数组,对象person)

为什么需要包装类型?

byte b1 = 10; 基本类型是没有额外方法,需要自己写
Byte b2 = 10; 包装类型,把基本类型封装成对象,对象就拥有了额外方法,开发起来就更加简单
包装类型是基本类型还是引用类型?包装类型是引用类型。

数组

基本类型和包装类型都只能表达单个值,如果很多值采用数组
int[] arr1 = new int[10];
数组是引用类型,数组的元素是int基本类型
int[] arr2 = {1,2,3,43,4}; 简写
1)数组长度:arr2.length 属性
2)数组的下标:arr2[0],下标从0开始
3)数组第一个元素访问:arr2[0]
4)数组最后一个元素方法:arr2[ arr2.length-1 ]
工具类:Arrays
5)数组打印,不是打印地址,打印内容:Arrays.toString()
6)数组排序:Arrays.sort,副作用,覆盖原有数组

对象

java中所有的类都是Object的子类,
对象的表现力非常方法,支持各种类型,支持各种方法,最终可以抽象生活中的万物。

类和对象

类:蓝图(图纸)一张
对象:具体楼(实体)多栋
创建方法:格式:类名 实例名 = new 类名();
Person person = new Person();
Cat cat = new Cat();
Car car = new Car();
Car baomaCar = new Car();
Car benchiCar = new Car():

你可能感兴趣的:(java基础,java)