java 第二天,Java复习第二天

1.idea里jar包和war的区别

JAR(JAVA Archive 是类的归档文件),JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。

简单来说,jar包就像一个插件而且是打包已经写好的类,可以将jar包导入自己写的项目中,也可以直接使用jar包中的类和属性(jar包一般放在bin目录中)

WAR(Web application Archive,war包是JavaWeb程序打的包,一个Web应用程序),war包里面包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。

部署普通的spring项目用war包就可以,部署springboot项目用jar包就可以,因为springboot内置tomcat

2.JAVA环境配置

JDK(JavaSE Development Kit,java开发工具包)提供了编译、运行java程序所需的各种工具和资源,包括java编译器、java运行时环境,以及常用的java类库等

JRE,(Java Runtime Environment ),java运行时环境。它是运行java程序的必须条件。一般而言,如果只是运行java程序,可以只安装JRE,无需安装JDK

3.安装jdk

2.在 "系统变量" 中设置 3 项属性,JAVA_HOME、PATH、CLASSPATH(大小写无所谓),若已存在则点击"编辑",不存在则点击"新建"。

(注意:如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序。)

变量名:JAVA_HOME

变量值:C:\Program Files (x86)\Java\jdk1.8.0_91        // 要根据自己的实际路径配置

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;         //记得前面有个"."

变量名:Path

变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(注意:在 Windows10 中,Path 变量里是分条显示的,我们需要将 %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin; 分开添加,否则无法识别:)

测试JDK是否安装成功

1、"开始"->"运行",键入"cmd";

2、键入命令: java -version、java、javac 几个命令,

jdk 基本包

java.lang ----- 包含了java开发的基础类和一些基本的方法。其中最重要的类就是java.lang.Object类,它的对象是Java平台中所有其他类对象扩展层次树的根,又叫做语言包,基本类型都能在这里找到他的封装

java.io ----- 通过数据流、序列化和文件系统提供系统输入和输出,尤其是文件操作

java.util ----- 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)

java.sql ----- 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。此 API 包括一个框架,凭借此框架可以动态地安装不同驱动程序来访问不同数据源

JDK的最命令行工具

java: 启动JVM执行class

javac: Java编译器

jar: Java打包工具

javadoc: Java文档生成器

4.JAVA八大基本数据类型

byte,short,long,int(包装类为Integer),char(包装类为Character数据类型可以储存任何字符),boolean(默认值为false),float(浮点数不能用来表示精确的值)double

string 类中的常用方法

length() : 获取字符串的长度,其实也就是字符个数

charAt(int index) : 获取指定索引处的字符

indexOf(String str) : 获取str在字符串对象中第一次出现的索引

substring(int start) : 从start开始截取字符串

String substring(int start,int end) : 从start开始,到end结束截取字符串。包头不包尾

equals(Object obj) : 比较字符串的内容是否相同

toCharArray() : 把字符串转换为字符数组

toLowerCase() : 把字符串转换为小写字符串

toUpperCase() : 把字符串转换为大写字符串

trim():去除字符串两端空格

字符串比较

public int compareTo(String anotherString)//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。

public int compareToIgnore(String anotherString)//与compareTo方法相似,但忽略大小写。

public boolean equals(Object anotherObject)//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。

public boolean equalsIgnoreCase(String anotherString)//与equals方法相似,但忽略大小写。

12.replace(char oldChar, char newChar)//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。

5.==, equals 与 hashCode 的区别与联系

== : 该操作符生成的是一个boolean结果,它计算的是操作数的值之间的关系

若操作数的类型是基本数据类型,则该关系操作符判断的是左右两边操作数的值是否相等

若操作数的类型是引用数据类型,则该关系操作符判断的是左右两边操作数的内存地址是否相同。也就是说,若此时返回true,则该操作符作用的一定是同一个对象。

equals : Object 的 实例方法,比较两个对象的content是否相同

equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。

hashCode : Object 的 native方法 , 获取对象的哈希值,用于确定该对象在哈希表中的索引位置,它实际上是一个int型整数

hashcode是系统用来快速检索对象而使用

equals方法本意是用来判断引用的对象是否一致

重写equals方法和hashcode方法时,equals方法中用到的成员变量也必定会在hashcode方法中用到,只不过前者作为比较项,后者作为生成摘要的信息项,本质上所用到的数据是一样的,从而保证二者的一致性

6.HashMap和Hashtable的区别和联系

相同点: 实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互用

不同点: 1、Hashtable是早期提供的接口,HashMap是新版JDK提供的接口。

2、Hashtable继承Dictionary类,HashMap实现Map接口。

3、Hashtable线程安全,HashMap线程非安全。

4、Hashtable不允许null值,HashMap允许null值。

7.集合和数组

一、数组声明了它容纳的元素的类型,而集合不声明。

二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。

三、数组的存放的类型只能是一种(基本类型/引用类型),集合存放的类型可以不是一种(不加泛型时添加的类型是Object)。

四、数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查都是最快的。

8.集合体系结构

Collection

├List (有序集合,允许相同元素和null)

│├LinkedList (非同步,允许相同元素和null,遍历效率低插入和删除效率高)

│├ArrayList (非同步,允许相同元素和null,实现了动态大小的数组,遍历效率高,用的多)

│└Vector(同步,允许相同元素和null,效率低)

│ └Stack(继承自Vector,实现一个后进先出的堆栈)

└Set (无序集合,不允许相同元素,最多有一个null元素)

|-HashSet(无序集合,不允许相同元素,最多有一个null元素)

Map (没有实现collection接口,key不能重复,value可以重复,一个key映射一个value)

├Hashtable (实现Map接口,同步,不允许null作为key和value,用自定义的类当作key的话要复写hashCode和eques方法,)

├HashMap (实现Map接口,非同步,允许null作为key和value,用的多)

└WeakHashMap(实现Map接口)

9.常用集合的分类:

List 接口:元素按进入先后有序保存,可重复

LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全

ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全

Set 接口: 仅接收一次,不可重复,并做内部排序

HashSet 使用hash表(数组)存储元素

LinkedHashSet 链表维护元素的插入次序

TreeSet 底层实现为二叉树,元素排好序

Map 接口: 键值对的集合 (双列集合)

Hashtable 接口实现类, 同步, 线程安全

HashMap 接口实现类 ,没有同步, 线程不安全-

TreeMap 红黑树对所有的key进行排序

Vector类

Vector非常类似ArrayList,但是Vector是同步的

总结

1.如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。

2.如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。

3.要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。

4.尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qlistview 自定义控件_是否可以在QListView中添加自定义窗口小部件?

I have a large log data (100, 1000, 100000, ... records) and I want to visualize it in the following manner:Which widget (e.g. QListView, QListWidget) should I use and how, in order to stay away from performance and memory problems?解决方案Is it possible …

php 零宽断言,正则表达式之零宽断言实例详解

这篇文章主要介绍了正则表达式之零宽断言,简单介绍了零宽断言的概念、分类及php实现技巧与相关注意事项,需要的朋友可以参考下本文实例讲述了正则表达式之零宽断言。分享给大家供大家参考,具体如下:前言之前我曾写了一篇关于正则表达式的文章(http://www…

element ui 多个子组件_vue前端UI框架,一点都不圆润,盘它!

面对众多vue前端UI框架,看着它们干干巴巴、麻麻赖赖的样子,一点都不圆润,跟我一起盘它!Vue移动端UI框架1、Vux(star:15620)VUX(读音 [v’ju:z],同 views)是基于WeUI和Vue(2.x)开发的…

ios 裁剪圆形头像_iOS开发之裁剪圆形头像

- (void)viewDidLoad {[super viewDidLoad];//加载图片UIImage *image [UIImage imageNamed:"菲哥"];//获取图片尺寸CGSize size image.size;//开启位图上下文UIGraphicsBeginImageContextWithOptions(size, NO, 0);//创建圆形路径UIBezierPath *path [UIBezierPa…

python 图像处理_Python中的十大图像处理工具

文章发布于公号【数智物语】 (ID:decision_engine),关注公号不错过每一篇干货。来源 | 大数据文摘(BigDataDigest)编译 | 张秋玥、小七、蒋宝尚本文主要介绍了一些简单易懂最常用的 Python 图像处理库。当今世界充满了各种数据&am…

php函数方法,基于PHP函数的操作方法

如下所示://简单函数function show(){echo "hello";}show();//有参数的函数function show($a){echo "$a";}show("world");//有返回值的函数function show(){return "小V,你好!";}echo show();functi…

centos7安装php5.2yum源操作_Centos7.6使用yum安装PHP7.2

Centos7.6使用yum安装PHP7.21、安装源安装php72w,是需要配置额外的yum源地址的,否则会报错不能找到相关软件包。php高版本的yum源地址,有两部分,其中一部分是epel-release,另外一部分来自webtatic。如果跳过epel-relea…

mysqlclient==1.3.7对应mysql版本_「MySQL」CentOs 7 下安装MySQL

MySQLMySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一YUM 安装mysql1、下载 YUM 仓库文件打开网址: https://dev.mysql.com/downloads/…

php rewinddir(),PHP rewinddir() 函数 ——jQuery中文网

实例打开一个目录,列出其中的文件,充值目录句柄,重新列出其中的文件,然后关闭:$dir "/images/";// Open a directory, and read its contentsif(is_dir($dir)){if ($dh opendir($dir)){//List files in im…

汇编jnl_汇编指令集

1 X86和X87汇编指令大全(有注释)2 ---------- 一、数据传输指令 ----------------------------------------------------3 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.4 1. 通用数据传送指令.5 MOV 传送字或字节.6 MOVSX 先符号扩展,再传送.7 MOVZX 先零扩展,再传…

nginx log response_nginx优化配置大全

很多程序员面试被问到nginx优化做过哪些,因此来记录下配置文件样例为生产环境样例。1、nginx基本优化安装方式有2种:1、源码包安装 2、yum(apt-get)安装区别为如果用yum安装的话,很方便,并且基本不报错。如…

指纹对比软件_iQOO VS 小米9屏幕指纹大对决,这次我为vivo疯狂打Call!

在经历了性能、续航、充电的对比之后,我们今天带来了iQOO和小米9的屏幕指纹对比,看看两者在屏幕指纹方面究竟有何不同的表现。▼屏幕指纹原理目前屏幕指纹技术大致分为光电屏幕指纹和超声波屏幕指纹两种,而iQOO和小米9所采用的都是光电屏幕指…

oracle数据库恢复参数文件位置,Oracle数据库的参数文件备份与恢复

Oracle数据库的参数文件包含两个文件:一个是spfile二进制文件名字为spfilesid.ora(其中sid你数据库的实例名称)。另一个是pfile文本文件的参数文件,名字为initsid.ora(其中sid你数据库的实例名称)。默认情况下数据库是只有一个参数文件的,那就是spfile,它…

python绘制3d坐标轴_matplotlib在python上绘制3D散点图实例详解

大家可以先参考官方演示文档: 效果图:3D scatterplotDemonstration of a basic scatterplot in 3D.from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def randrange(n, vmin, vmax):Helper function to mak…

oracle cascade是什么意思啊,Oracle外键(Foreign Key)之级联删除(DELETE CASCADE)

什么是级联删除(DELETE CASCADE)?级联删除是指当主表(parent table)中的一条记录被删除,子表中关联的记录也相应的自动删除。备注:外键字段在该表中为主键的表,即为主表;外键字段在该表中为普通字段的表,即…

翻转链表python递归_Python实现链表反转的方法【迭代法与递归法】

导读 这篇文章主要介绍了Python实现链表反转的方法,结合实例形式分析了Python迭代法与递归法实现链表反转的相关操作技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python实现链表反转的方法。分享给大家供大家参考,具体如下: Python实现链表反转 …

oracle高级函数去重,傅老师课堂:Oracle高级应用之去重聚合函数

开篇一笑:高中的时候,自行车被偷,早上顺路搭同学的自行车。我坐在后座看到前面一大妈跑步,很猥琐的对同学说:“你看前面那个肥婆跑得屁股都甩圆了!”这货沉默了一下。当我们和大妈擦身而过的时候&#xff0…

jquery手写轮播图_jquery 实现轮播图详解及实例代码_jquery_脚本之家

轮播图:接触jquery也有一段时间了,今天刚好利用轮播图来练练手。博文的前面会介绍一个简单用jquery做轮播图的例子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写一个轮播图,最后则是关于jquery…

关于python_关于python的基础知识

一,编程语言的类型: 1、编译型 2、解释型 3、静态语言 4、动态语言 5、强类型定义语言 6、弱类型定义语言 编译型vs解释型 编译型: 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译…

oracle10g如何导出dmp,Oracle 10g dmp文件的导入导出

Oracle数据导入dmp文件可以是“某个用户下的数据库”,也可以是“某张表”,这里以导入数据库为例说明 :1.用SYS用户名,以DBA的身份在ie中登入到数据库(ORACLE客户端Enterprise Manager Console)2.在方案->用户与权限->用户新…