java测试
第一个软件–二分法
人工智能–鬼(机器人)
智能程序:今日头条,淘宝,微信,忽视了他的置信度,不靠谱的信息。 买了一堆差的商品,无法评论信息的真伪新闻,忽略人与人的相处。
JDK的基本组件
1、javac – 编译器,将源程序转成字节码。
2、jar – 打包工具,将相关的类文件打包成一个文件。
3、javadoc – 文档生成器,从源码注释中提取文档。
4、jdb – debugger,查错工具。
5、java – 运行编译后的java程序(.class后缀的)。
6、appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
7、Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
8、Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
9、Jconsole: Java进行系统调试和监控的工具。
jdk8 mac版新特性
1、Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可。
2、新增lambda表达式。
3、提供函数式接口。
4、Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用。
5、我们可以直接在lambda表达式中访问外层的局部变量。
30亿设备运行java
Java SE Development Kit 8 for mac版是一个可以在苹果电脑上使用的Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序,也可以简称其为“jdk8”。
JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。新版本的JDK多了许多有用的功能,比如说新增了一个依懒性分析工具jdeps,可由开发人员理解他们的应用程序和库的静态依赖关系;
新的jar文件属性切入点,确定进场点有助于防止未经授权的代码被运行时JAR文件与main()方法的多个类,多个Applet类,或多个JavaFX应用程序类;新的JAXP处理属性maxelementdepth,被添加到提供应用程序设置最大元素深度限制在一个xml文件当中。想要学好Java,那么JDK是比不可少的,有需要的小伙伴赶紧来下载吧。
https://pan.baidu.com/s/1vvrnHmpo3gLDJJNOeD289g
终端 运行2019-09-04
二分法
Last login: Wed Sep 4 19:17:20 on ttys001
➜ ~ git:(master) ✗ cd /Users/tianzi/Desktop/时间复杂度
➜ 时间复杂度 git:(master) ✗ javac erfen.java
上面是编译
➜ 时间复杂度 git:(master) ✗ java erfen
这个是运行;
3
➜ 时间复杂度 git:(master) ✗
Java 二分法查找
//https://blog.csdn.net/happyzwh/article/details/80398519
二分法
public class erfen{
public static int binerySearch(int[] arr, int searchNum) {
// 初始化左侧索引
int leftIndex = 0;
// 初始化右侧索引
int rightIndex = arr.length - 1;
while (leftIndex <= rightIndex) {
// 计算中间索引
int mid = (leftIndex + rightIndex) >>> 1;//主要防止溢出,就是除以2的意思
// 如果查询的数等于中间索引对应的数组里的数,则返回mid索引,并退出循环
if (searchNum == arr[mid]) {
return mid;
}
// 判断并计算右侧索引
if (searchNum < arr[mid]) {
rightIndex = mid - 1;
}
// 判断并计算左侧索引
if (searchNum > arr[mid]) {
leftIndex = mid + 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr ={1,2,3,4,5,6,7};
int x = er.binerySearch(arr, 4);
System.out.println(x);
}
}
JAVA笔记
001
源代码
编辑器
输出
字节码文件
jvm
eclipse中新建class文件,以及遇到基本错误的修改
public class A{
public static void main(String[] args){
System.out.printf("welcome to beijing lily")
}
}
public ststic修饰符
void返回类型为空
main方法名
()参数
String字符型
[]数组
args参数值 //可修改
002 用记事本编写了java源程序并运行
jdk下载及环境变量配置
java -version检查环境变量配置是否OK
javac A.java编译源文件
java A 输出字节码文件
003 JAVA的程序结构
编写源文件=编写类文件
类必须用“关键字”class来定义,并指定类名
main是固定写法
类:老师是Cindy
类是某一类型对象集合
对象一定是一个类
类可以实例化对象
004 java的数据类型
java基本数据类型
共8种(2中(数字和字符))
整数:byte-128---+127
short -32768_+32767
int -2147483648_2147483647
long
小数:float/double
字符型:char:'a'
boolean 值真和假
扩展数据类型
005 常量
常量:计算机处理过程中,不变化的数据。
float类型常量:1.5f
double类型常量:1.5
char:'1',不加单引号就是数字1
boolean:true、false
字符串常量:"helloworld"
006 变量
原则:
1、变量必须有类型;
2、变量必须有名字;
3、变量有大小;
007 条件结构
if、else if、else
满足特定条件,执行相应的语句
008运算符和表达式
算术运算符:+-*/%(求模即取余数)、++、--
y++//y=y+1;
y--//y=y-1;
赋值运算符:=、+=、-=、*=、/=、%=
关系运算符:> < >= <=
运算结果是:true、false
逻辑运算符:& | ! ^&& ||
&按位与:两边为真则真
|按位或:一边为真则为真
&&逻辑与:两边为真则为真
&和&&区别???
&左右两遍都会计算,无论真假
&&左侧计算为假不会计算,直接短路
!逻辑非:非真即假
<< >>位运算
?:三目运算符
boolean z=y>3?true:false//
int z=y>3?2:5
赋值运算符优先级最低
009 for循环
循环语句:反复做一件事情
表达式为真一直执行,为假退出for循环
010 while循环语句
死循环:
while(x<=3){
System.out.println(x);
}
正常如下
while(x<=3){
System.out.println(x);
x++;
}
do{
}while();//先执行循环体,在执行判定条件
while语句与do while语句的区别?
while语句条件不成立,不执行循环体,直接退出循环;
do while语句,先执行循环体
**break语句:终止循环
**continue语句,遇到continue语句会直接跳转至条件判断
011数值
1.数组就是一组数据,类型相同的数据。存储一组数据的对象
2.数组的声明
3.数组的初始化
声明:
数组声明类似空书架,还未放书;
int[] x;
float[] x;
char[] x;
String[] x;//字符串类型
------
初始化数组的方法:
1、
int[] x;
x= new int[5];//长度为5的数组
x[0]=1;
...
x[4]=5;//把值放上去
2、
int[] x=new int[5]
x[0]=1;
...
x[4]=5;
3、int[] x=new int[]{1,2,3,4,5};
012 设计真正应用程序 013对相应的行为状态
对象是已知的事物
对象会执行动作
类是对象的蓝图
现有类,再有对象
014构造方法
构造方法目的:用来初始化一些实例或属性值、成员变量,没有返回类型
构造方法名要与类名一致
015构造方法的重载
构造方法:修饰符+方法名
重载:
一个类中有多个构造方法,
构造方法名可同名,但不能一模一样
构造参数类型可一样,顺序不可相同
016 方法的重载
普通方法:
修饰符 类型 方法名{
输出;
返回;
}
**参数不能一样
017 告诉对象中怎么做-方法中传参
普通方法:
修饰符 类型 方法名{
输出;
返回;
}
**参数不能一样
018 方法的返回值
方法的组成:
修饰符public
返回值void或其他
方法名
参数列表
{}方法体
有返回值的方法类型,一定要有return
方法返回调用后,主程序可以捕捉到return值
019 创建对象数组
声明一个数组的长度;类[]
给每一个元素赋值;
020 对象与对象之间的关系
例如:电脑、鼠标都是对象,
关系:
依赖
关联
聚合
car类包括引擎类的对象(has a)
包含中的类也可以独立存在
组合
不能独立存在;比如head类包含mouth类
继承
021 一个对象怎么调用另一个对象?
先有类,再有对象
调用一个对象,先实例化一个对象
一个主程序,两个关联类文件
打包一个运行:
新建一个清单文件:manifest.mf(输入main-class:主程序类名)
jar cvfn test1.jar manifest.mf Teacher.class Student.class test1.class
java -jar test1.jar
022 对象的继承
继承:子类继承父类(基类)
extends 继承父类成员变量、方法,私有不可继承
子类从父类复制一个相同的方法
023方法的覆盖
1、覆盖必须发生在继承内
2、子类重写父类的同名方法Override
覆盖的原则:
1、子类方法的参数必须跟父类保持一致;
2、子类方法的修饰符的范围必须>=父类同名方法的修饰符
024 到底调用哪个方法??多态
父类 对象=new 子类();多态。。调用的是子类的方法
子类对象绝不可以new父类
父类声明的方法只能是子类覆盖的属性和方法;
一个父类可以有多个子类
025 关键字:this和super
this.是指当前对象
子类对象构想时会先调用父类构造方法
super:调用父类的构造方法,要写函数最前面
多态
026 -不改初始化的class
(抽象类)
1、声明必须加Abstract关键字
2、抽象方法:没有方法体的方法,
public void eat(){}
3、类中有一个抽象方法,这个类就是抽象类
4、目的:被子类重写覆盖
027 接口
抽象类中继承是extends
接口中继承是implements
接口中的方法全部是抽象方法
接口中成员变量:pulic static final
必须是被初始化
接口是抽象的最高定义
当子类实现接口的时候,必须覆盖接口中所有的方法
java函数库
028 如何组织类—包
package:java中叫打包
位置:声明处
javac A.java -d .//指定目录,点为当目录
java com.lily.pkg1.A
打包的目的:组织类文件
***关键字:package、import
类文件中,使用其他目录下的方法,需要import相关路径(包的路径)
029 如何使用java API
API:application programming interface应用程序接口
注意查看:JDK API文档(重要)
030字符串函数
字符串是基于char类型
1、自定义类首字母要大写;
2、java的每一个类都是抽象数据类型
**substring(5)开始下标记,到第5个位置结束
substring(5,8),开始位置,结束位置
trim压缩左右两侧的空格
3、String类是最终类,不能被继承
**StringBuffer
**StringBuilder
031 日期函数
日期类Date-》java.util包中
Date类:
1、Date()构造方法;
2、Calendar
032 Math函数
数学函数
封装了很多数学运算;
E、PI(相当于常量,只能被赋一次值)
abs绝对值
ceil:Math.Ceil(3.5)
floor:Math.Floor(3.5)
random随机数
round四舍五入
集合函数
033 list
集合:集合起来的一种数据
与数组不同之处:
1、数据类型可不同
2、长度可超过10个
实现子类:
ArrayList
ArrayList()构造一个长度为10的数组
LinkedList
上述都为实现List接口;
底层实现不一样:一个数组一个链接
Vector向量
034 集合函数 set
Set接口:不包含重复函数的
子类:TreeSet。底层通过二叉树实现
HashSet。底层通过哈希表实现
TreeSet
没有Get方法,需要转换成迭代器Iterate迭代器;
不同之处:TreeSet是有序的
set集合自动排序
035 集合函数Map
key和value的映射集合
API-java.util.Map
将键映射到值的属性
子类
TreeMap
有序的
HashMap
遍历用get方法:通过键输出对应值,通过键值对输出值
Hashtab
控制风险
036 有风险的代码-异常
**算术运算中,被除数不能为0;
System。out.println(5/0);
**数组下标越界
int[] x=new int[]{1,2,3};
for(int i=0;i<=3;i++){}
**空指针异常
int x;
System.out,println(test1.x.length());
**捕捉和处理异常
try{ //监听可能发生异常code
}catch(){
}
例如:
try{}catch(NullPointerException e){
catch 块
}
一个try可以跟多个catch块,try监听异常code,catch捕捉异常code
Exception类-java.lang包中
所有异常类的父类
继承了Throwable
**空指针:调用空对象
子类:RunTimeException运行异常
Exception
RuntimeException
NullPointerException
IndexOutException
**try块中代码不出现异常时,不会走catch块,直接结束
037 finally块
code位置:跟在catch块之后;
原则:必须要执行的语句。无论try/catch是否异常
**关闭一个连接对象