发布于2021-05-29 21:56 阅读(608) 评论(0) 点赞(24) 收藏(4)
岗位:开发、测试(保证写的代码的正确)
开发者自己做完业务代码,需要自测(自己测试自己写的代码)
1)打印调试信息到控制台:syso 坏处,它浪费我们代码执行时间。以前调试时检查是否正确,正确后,真正交付用户时,把这些代码屏蔽掉。删除、注释掉(在编译compile后注释语句会从目标文件删除)
2)单元测试 jUnit(每个类的每个功能要测试-方法)要写调试,它通过一个日志级别概念。相当于全局的开关,开时就输出日志信息打印控制台,关闭时就不会输出,不执行,不影响程序效率。
单元测试是每个开发者都必须要做的事情!每天每个类都要写单元测试。
1)第三方(非java原生)导包 *.jar,工程要支持junit 4,我们开发代码才可以使用
2)创建单元测试方法,替代main方法。独立方法去运行
3)main、业务方法、单元测试方法,怎么区分它们?junit提供技术:注解@Test(戴帽子)
4)把我们要测试的代码写到@Test的方法内,不写在main中了
5)右键运行,会有新菜单 java junit。运行时会额外弹出一个框,里面有进度条。如果绿色代表执行成功,如果棕色代表出错了。(改代码,重新运行)
main是原生方法,java的规范。
main不是必须,如果这个类需要执行(运行)必须写main,入口函数。类可以有很多方法,但main方法只有一个。运行时java会自动找main方法。有就运行,没有就不运行。
单元测试方法不是原生,不是java提供的,第三方junit提供。单元测试的方法在一个类中可以有多个。
单元测试方法可以选择某个进行执行。单元测试的方法比main方法更加灵活。
本质差异,junit单元测试的方法能否替代掉main方法?
1)main方法最终可以类似QQ、游戏,单独运行程序。(目标可以运行程序)main可以充当,但是没有junit灵活。
2)junit单元测试只为测试而生,运行时跟测试就无关。(目标就是测试)
1)旧程序定义:数据结构+算法*
2)新程序定义:数据结构+算法+框架(三大框架ssm)+架构(分布式、微服务、大数据)
1)数据存储
数据要计算,要临时存储在内存中,执行代码时,先把数据放入内存,需要计算时,从内存中去获取数据,计算完,在把数据放回内存中。内存是个稀缺资源。使用内存时必须合理使用内存。给占用小的分配小的资源,给大就分配大的资源。
怎么把生活中事务对应去变成计算机对应资源,最终体现内存所占用的大小?
在java中分为两类:
1)基本类型变量,8种
2)更复杂结构:对象,引用类型
分为3类:整数类型、小数类型、其它
整数类型4个:byte、short、int、long
小数类型2个:float、double
其它2个:char、boolean
特点:长度不同,表现不同的东西,基本类型都有默认值
计算机最小单位:bit比特,开发语言java最小单位:byte字节;1byte=8bit
操作系统32b、64b
1)byte 字节型,1个字节,0,-128~127
2)short 短整型,2个字节,0,-32768~32767
3)int 整型,4个字节,0,默认,±21亿
4)long 长整型,8个字节,0
5)float 单精度浮点型,4个字节,0.0
6)double 双精度浮点型,8个字节,0.0,默认
7)char 字符型,2个字节 ISO-8859-1 ASCII(2~4个)unicode 3个字节,4个字节。空字符NUL
8)boolean 布尔型,1个字节,false
java基本类型获取和访问的速度快;包装类型对象,它有额外很多方法,这些内容都要占内存,访问速度慢。基本类型占用内存空间小,执行速度快。包装类型(对象)占用内存空间大些,但是开发方便,无需自己去写这些额外方法。
java面对对象语言,使用额外方法,把基本类型封装包装类型。它就可以享受这些额外方法。
package cn.tedu.datatype;
//导包
import org.junit.Test;
//表达一个值要尽量使用刚刚好的存储类型,合理分配资源
//太小存不下,太大浪费空间
public class TestSpace {
@Test
public void number() {
//存储100使用哪个基本类型更合适?
byte b = 100;
short s = 100; //错误的,浪费空间了
//可以使用byte存储,也可以使用short来存储,但显然
System.out.println(b);
//存储200使用哪个基本类型更合适
//Type mismatch: cannot convert from int to byte
//类型不匹配,默认输入一个整数,java当做int类型
byte b1 = (byte)200; //强制类型转换,强制java编译器200是字节类型
short s1 = 200;
System.out.println(b1); //字节表达:-128~127(256=2^8)
System.out.println(s1); //短整型:-32768~32767(64k,6w)
}
}
package cn.tedu.datatype;
import org.junit.Test;
//打印8个基本类型的默认值
public class TestDefaultValue {
//类级别变量,写在类名下面的,也称为成员变量,也叫字段field,属性property
byte b;
short s;
int i;
long x; //l有些字体不易和其他字母区分,所以开发中不要使用l
float f;
double d;
char c;
boolean bn;
String s; //默认值null
@Test
public void defaultValue() {
//新的概念,局部变量-方法(必须初始化),成员变量
//int a;
//The local variable a may not have been initialized
//局部变量必须初始化
//System.out.println(a);
//快捷键:ctrl+alt+下箭头(复制光标所在行)
System.out.println("byte:" + b);
System.out.println("short:" + s);
System.out.println("int:" + i);
System.out.println("long:" + x);
System.out.println(); //空行
System.out.println("float:" + f);
System.out.println("double:" + d);
System.out.println();
System.out.println("char:" + c);
System.out.println("boolean:" + bn);
}
}
把人类文字通过计算机去表达,计算机0和1,二进制。a,b
解决方案ASCII编码,它把人类09,az设置一个数字顺序,编号。
a字母97整数(十进制转换二进制)二进制值:0110 0001
我们在键盘上敲击一个a字母,把a字母去查ASCII编码表中查询a字母的对应编号97,
把97整数转换二进制 0110 0001,最后计算机能识别。计算机又把二进制转换十进制97,把97又转换a字母,然后在屏幕上展现。
这个过程意义,为什么要做2次转换呢?人类和计算机通讯。
字符默认值:ASCII码表它第一个值0:NUL,总共128个,A 65,a 97
字符类型它有一个特殊性:它可以有两个身份:
char c1 = ‘a’;
char c2 = 97;
基本类型实现不了的。
基本类型为了性能快,它不提供去获取这个值的取值范围。
java把基本类型“包装”,java给每个基本类型都有一个对应包装类型,包装后就是对象,
它就提供额外方法,例如提供获取这个类型的最大值max和最小值min(取值范围)。
在java中基本类型全小写,包装类型首字母大写
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.datatype;
import org.junit.Test;
//八个包装类型对应取值范围
public class TestScope {
@Test
public void scope() {
System.out.println("Byte 取值范围:"
+ Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
System.out.println("Short 取值范围:"
+ Short.MIN_VALUE+"~"+Short.MAX_VALUE);
System.out.println("Integer 取值范围:"
+ Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
System.out.println("Long 取值范围:"
+ Long.MIN_VALUE+"~"+Long.MAX_VALUE);
System.out.println();
System.out.println("Float 取值范围:"
+ Float.MIN_VALUE+"~"+Float.MAX_VALUE);
System.out.println("Double 取值范围:"
+ Double.MIN_VALUE+"~"+Double.MAX_VALUE);
System.out.println();
//字符有没有最大值和最小值?ASCII的0对应NUL和127对应DEL键(不可见字符)
System.out.println("Character 取值范围:"
+ Character.MIN_VALUE+"~"+Character.MAX_VALUE);
System.out.println("Boolean 取值范围没有,就true和false");
}
}
单一,只能表达一个值
学生成绩:100,99,60
int yw = 100;
int sx = 99;
int en = 60;
需求:共性它要表现一组值,多少个不定,怎么表达?
数据结构:数组 array
package cn.tedu.datatype;
import java.util.Arrays;
import org.junit.Test;
//数组array,非基本类型都是引用类型,本身对象
public class TestArray {
@Test
public void scope() {
//数组定义有两种方式
//第一种方式,标准方式,使用new来创建对象实例
int[] arr = new int[4]; //声明:创建int数组,数组有3个元素
//给数组元素进行初始化,赋值。怎么访问数组某个元素?
//通过下标(索引,序号)来访问数组,从0开始
arr[0] = 100;
arr[1] = 99;
arr[2] = 60;
arr[3] = 88;
//访问数组元素
System.out.println("数组的长度:" + arr.length );
System.out.println("第一元素:" + arr[0] );
System.out.println("最后一个元素:" + arr[3-1] ); //arr[2]进过编译,编译优化
System.out.println("最后一个元素:" + arr[ arr.length-1 ]); //推荐,代码要尽量写活
//数组的第二种写法,简写,把创建和初始化合并一句代码,推荐
String[] s = {"语文", "数学", "英语", "化学"};
System.out.println("数组的长度:" + s.length );
System.out.println("第一个元素:" + s[0] );
System.out.println("最后一个元素:" + s[ s.length-1 ]);
//数组打印所有内容(工具类Arrays.toString())
System.out.println( s ); //不会打印数组的值,会打印数组对象在内存中地址
System.out.println( Arrays.toString( s ));
//数组排序(升序)(工具类Arrrays.sort(arr))
System.out.println( "排序前:"+Arrays.toString(arr) );
Arrays.sort( arr ); //特点,先排序,覆盖原有数组(原有值被改变),升序
System.out.println( "排序后:"+Arrays.toString(arr) );
}
}
数组可以表现一组值,但是它的每个的元素类型都一致,不能存储不同的数据类型。
需求:表现一组成绩
语文100,数学99,英语60,化学88
既有字符串类型,又有整数类型
java中就提供最强大功能,在java万物皆对象Object。
java一个面对对象的语言。
需求:人 person
对象的属性习惯使用包装类型
对象的属性(字段、成员变量)
1)身份证号码 cardNo(18),String
2)姓名 name,String
3)年龄 age,Integer
4)性别 sex,Boolean,true男,false女
4)地址 address,String
创建对象步骤:
1)创建类Person
2)创建成员变量(属性、字段)public String cardNo; 一般不设置初始化
3)创建对象实例 Person p = new Person();
4)给属性进行初始化 p.cardNo = “610113”; (对象是通过实例名.属性名)
5)打印对象的某个属性值 syso(p.cardNo)
package cn.tedu.datatype;
//实体:1、创建人这个类(类首字母大写)
public class Person { // 大驼峰规则
// 2、成员变量(属性)习惯包装类型
public String cardNo; // 身份证号,小驼峰规则
public String name; // 姓名
public Integer age; // 年龄
public Boolean sex; // 性别
public String address; // 地址
}
package cn.tedu.datatype;
import org.junit.Test;
//单元测试类
public class TestPerson {
@Test
public void person() {
//调用Person类
//3、创建对象实例,实例名p
Person p = new Person();
//访问属性值,引用类型默认值null
System.out.println( p.cardNo );
//4、属性初始化
p.cardNo = "610113";
p.name = "詹姆士邦德";
p.age = 50;
p.sex = true; //男
p.address = "伦敦军情六处";
//5、打印每个属性
System.out.println(p.cardNo);
System.out.println(p.name);
System.out.println(p.age);
System.out.println(p.sex);
System.out.println(p.address);
}
}
原文链接:https://blog.csdn.net/nutony/article/details/117280773
作者:我睡觉爱打呼噜
链接:http://www.javaheidong.com/blog/article/207680/639fe77641f7889e4ea6/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!