数据结构
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;
public class TestPrimiry {
@Test
public void number() {
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() {
System.out.println("字节型取值范围:"
+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
System.out.println("短整型取值范围:"
+Short.MIN_VALUE+"~"+Short.MAX_VALUE);
System.out.println("整型取值范围:"
+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
System.out.println("长整型取值范围:"
+Long.MIN_VALUE+"~"+Long.MAX_VALUE);
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;
public class TestArray {
@Test
public void array() {
String[] courses = new String[5];
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() {
int[] g = {100,90,60,80,98};
int sum = g[0]+g[1]+g[2]+g[3]+g[4];
System.out.println("总分:" + sum);
int avg = sum/g.length;
System.out.println("平均分:" + avg);
System.out.println(g);
System.out.println( Arrays.toString(g));
Arrays.sort(g);
System.out.println( Arrays.toString(g));
System.out.println("最高分:"+g[g.length-1]);
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;
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;
public class TestPerson {
@Test
public void obj() {
Person person = new Person();
person.name = "詹姆士邦德";
person.sex = true;
person.age = 70;
person.address = "英国伦敦军情六处";
System.out.println(person.name);
System.out.println(person.sex);
System.out.println(person.age);
System.out.println(person.address);
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():
|