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时,客户端代码不用改变。这就是针对抽象编程。
java 第二天,Java复习第二天相关推荐
- 【深入理解Java虚拟机学习笔记】第二章 Java 内存区域与内存溢出异常
最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...
- 尚硅谷Java入门视频教程第二章——Java基本语法
尚硅谷Java入门视频教程第二章 第一章复习 课后习题 Java语言概述 第2章:Java基本语法 2.1 关键字和保留字 2.2 标识符(Identifier) 2.3 变量 2.3.1 变量基本概 ...
- [java手把手教程][第二季]java后端博客系统文章系统——No10
项目github地址:github.com/pc859107393- 实时项目同步的地址是国内的码云:git.oschina.net/859107393/m- 我的简书首页是:www.jianshu. ...
- 第二章 java常用开发工具以及程序的编写
2019独角兽企业重金招聘Python工程师标准>>> 第二章 java常用开发工具以及程序的编写 1. 程序的概念 2. java程序的开发的三个步骤 ...
- 描述java源程序构成_Java第二章Java程序设计
<Java第二章Java程序设计>由会员分享,可在线阅读,更多相关<Java第二章Java程序设计(140页珍藏版)>请在人人文库网上搜索. 1.第2章 Java基本语法,2. ...
- 使用java实现面向对象编程第二章_java面向对象编程——第二章 java基础语法
第二章 java基础语法 1.java关键字 abstract boolean break byte case catch char class const continue default do d ...
- java 计数器越界,[总结]-第二章 Java内存区域与内存溢出异常
[总结]-第二章 Java内存区域与内存溢出异常 一.知识点 1.虚拟机运行时数据区 方法区:运行时常量池(JDK1.7被移出) 堆:存放对象实例或数组.新生代和老年代 虚拟机栈:线程私有.栈 本地方 ...
- java语言定义一个具备栈功能的类_Java学习笔记 第二章 Java语言基础
第二章 JAVA语言基础 一.关键字 1.关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有的字母都为小写 2.用于定义数据类型的关键字 c;ass interface ...
- 第二周Java学习总结
计算机基础 计算机由两部分组成: 软件和硬件. 没有安装任何软件的计算机叫做裸机 1.计算机硬件概念:由电子,机械和光电元件组成的物理装置的总称 组成:由CPU.主板.内存.电源.主机箱.硬盘.显卡. ...
最新文章
- Python 库安装提示:ModuleNotFoundError: No module named ‘windows‘. 问题解决方法
- 文巾解题 326. 3的幂
- JAVA 学到什么水平就可以转战 Android 了?
- 搭建glusterfs集群
- linux i2c子系统入口,I2C子系统1 - ARM_Linuxx的个人空间 - OSCHINA - 中文开源技术交流社区...
- react(92)--批量删除进行置空操作
- 谈谈怎样提高炼丹手速
- 开源软件 Apache Dubbo 牵手 IDE 插件,开发部署提速不止 8 倍
- 基于spiking卷积的脉冲时间编码
- Java多线程学习十:线程池实现“线程复用”的原理
- python 逐行读取文件_Python fileinput模块:逐行读取多个文件
- antvue 有赞布局_UI大全:前端UI框架集合(持续更新,当前32个)
- 2年3个月推倒重来的决心 独立游戏《须弥•域》的涅槃之路
- AS星尘粒子系统 初识2
- 各纬度气候分布图_气候分布图有纬度
- C++ 设计模式 简单工厂模式
- KGB知识图谱深入挖掘金融行业的知识关联
- 题目-火影-鸣人-查克拉分配给分身(详解)
- 如何把自己的经历写成小说_教你如何把一本小说写成太监
- Visionpro从小白到大佬,第一章了解工具名称和用途
热门文章
- 进程同步,异步,互斥
- python assert 与 slice
- 权限列表(包字典)递归成树状结构
- 训练数据的分布对F-measure, recall 和 precision的影响
- C++中虚函数、纯虚函数、普通函数三者的区别
- Replace Type Code with State/Strategy(以State/Strategy取代类型码)
- C++学习之路 | PTA乙级—— 1040 有几个PAT (25 分)(精简)
- python跑一亿次循环_python爬虫爬取微博评论
- iOS-MVVM-模式介绍
- USTC 2011 homework list [现代软件工程 作业]