A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李竞一ljy 初级黑马   /  2019-8-15 11:31  /  815 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java语言
人与计算机进行信息交流的特殊语言
调动计算机的各种机制功能(磁盘,cpu,信息交互),需要语言发布指令
这种沟通机制为Java语言
常见的计算机语言:java,C,C++,c#,vbscript,php,python(大数据)
为什么学java,目前:功利:薪资
TIOBE发布变成语言排行榜
Java稳居第一,在众多编程语言,应用占有率高--人才缺口比较大---好找工作
薪资:
詹姆斯高斯林--Java语言之父(发明设计Java语言)
1995年Java语言(sun公司开发)
服务器(和IBM竞争):主要收入,Java免费使用,经济危机(2008)没挺过去
java语言跨平台原理
平台:windows...macOS,.ios.linux
跨平台:跨操作系统平台window,MAC,LinuxJava程序不做任何更改,就可以应用在不同的平台上。
针对不同的平台,提供不同的jvm,在需要运行Java的机器上,安装对应的Java虚拟机
竞争对手:c#不能直接在不同的操作系统。Java可以下可以直接使用

原理:采用Java编程,编写的是,一个....Java....文件,将其编译成    .class类型文件
windows操作系统
字节码文件内的n;,字节码运行在jvm上,为不同的操作系统提供不同的的虚拟机。

jre
是Java运行时环境,包含jvm和运行时的(底层)核心类库。
底层类库:封装了一系列的工具方法
jvm
是Java虚拟机,可以保证Java跨平台。
jdk
是Java程序的开发工具包(jvm+java开发工具(javac编译工具,java运行工具)+底层类库),包含jre。(
如果你只是一个软件的使用者,只安装一个jre即可。

针对不同的系统。下载不同的jdk

bin :存放jdk工具命令,javac和java
lib:   jdk补充的jre工具
从jdk.9开始jdk不提供32位版本。
conf:配置文件
include:C语言的头文件(有一部分是用C语言开发的)
jmods:模块文件
legal:授权文件
lib:底层类库

常用DOS命令
打开命令提示符窗口:
win+R
输入:cmd
按下回车键
打开盘符:e:  +回车
cd +文件名   :进入指定文件夹
cd ..   单极目录回退
二级进入:cd  文件名/文件名
dir:查看当下路径的内容
cd\   :回到盘符目录
cls    清屏
exit:退出窗口
为什么配置jdk环境
为了简化javac的执行过程
不配置环境,用javac需要将窗口内光标进入到  jdk的安装路径内的bin文件内
如果每次都这样做,会很繁琐
类和对象
为什么有类和对象
以为科学家希望将我们日常的思维方式引入Java编程,日常中我们要想完成一件事,总会先思考,需要什么工具才能完成这项任务,而想要拥有这个功能的工具,就要建立一个相对应的对象,要建立对象,就要先建立一个构建一个具有相同属性和行为的集合(类),所以类就是建立对象的模板.
所谓行为
就是说该对象都能做什么,具有什么功能.
Student s=new Student();
等号左边是引用;引用占4个字节.
成员方法被调用时,方法在栈内存中开辟内存区间
局部变量在该内存区间内被定义,应用,
当方法执行完所有语句时,会有出站动作,栈中的局部变量也会随之消失
Java util.Map<K,V>集合
Map集合的特点:
1:Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2:Map集合中的元素,Key和value的数据类型可以相同,也可以不同。
3:Map集合中的元素,Key是不允许重复的,value是可以重复的。
4:Map集合中的元素 ,Key和value是一一对应的.

Map常用的实现类
HashMap是基于哈希表的Map接口的实现,
此实现是不同步的(多线程的),很快
有子类:LinkedHashMap
Java util.HashMap<K,V>集合  implements Map<K,V>接口
特点:
1:HashMap集合底层是哈希表:查询的速度特别快:
     JDK1.8之前:数组+单项列表
     JDK1.8之后,数组+单项链表/红黑树(链表的长度超过8),提高查询的速度。
2.hashMap集合是一个无序集合,存储元素和取出元素的顺序是一致的。


Map常用方法
public V put(K key,V value); 把指定的键与指定的值添加到Map集合中。
返回值:V
    存储键值对的时候,key不重复,返回值V是null
    存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换value值
public V remove(Object key);把指定的键所对应的键值对元素在 Map集合中删除,返回被删除元素的值。
返回值:
key存在,返回被删除的V值
key不存在,V返回null
public V get(Object key);根据指定的键,在Map集合中获取对应的值。
返回值:
key存在,返回对应的value值
key不存在,返回null
public boolean containskey(Object key)  判断集合中是否包括指定的键
包含返回true,不包含返回值false
Set <K> keySet()  返回此映射中包含的键的 Set 视图(该方法返回的是包含所有键的Set集合)
实现步骤:
1.使用map集合中的方法keySet()  把Map集合所有的Key取出来,存储到一个Set集合中
2.遍历set集合,获取Map集合中的每一个key
3.通过Map集合中的方法get(key),通过key找到value.
泛型
是一种位置的数据类型,当我们不知使用什么类型的数据的时候,可以使用泛型,泛型也可以看成变量,用来接收数据 。
E e:Element 元素         T   t  Type   类型
ArrayList集合在定义的时候,不知道集合中都会玩什么类型的数据,所以类型使用泛型,E:未知的数学类型。
创建集合对象,使用泛型,好处:
1:避免了类型转换的麻烦, 存储的是什么类型,取出的就是什么类型。
2:吧运行期的异常(程序运行之后出现的异常),提升到了编译期(写代码的时候会出现异常)。
弊端:
泛型是什么类型,只能存储什么类型的数据。
泛型的定义和使用
定义一个含有泛型的类,模拟ArrayList/集合
泛型是一个未知的数据类型,当我们不确定什么数据类型的时候,可以使用泛型。
泛型可以接收任意的数据类型,可以使用Integer,String  ,Student.....
创建对象的时候确定泛型的数据类型。
1,public static void shuffle(List <?> list);打乱顺序,打乱集合顺序
2,public static <T> boolean addAll(Collection<T>   c,T.....elements):/往集合加多个元素
     eg:  ArrayList<String> arr=new ArrayList<>();
     Collections.addAll(arr , "刘德华","周星驰","张学友","诸葛亮","李竞一");
注意:
addAll方法中集合后面的逗号容易丢掉,后面的添加的元素,可以是具体的 ”内容“ ,也可以是对象名
上面两个方法都是static修饰的,可以直接用父类名称(Collections)调用

3,public static <T> void sort(List<T> list):将集合中的元素按照默认规则排序。
(参数类型只能是List集合,不能是Set类型集合,并且,默认排序为:升序)
注意:使用前提:
被排序的集合,里面存储的元素必须实现Comparable,  重写接口中的方法:comparableTo定义排序的规则。 (通常是自定义类型时需要自己动手重写)
Comparable排序规则:
自己(this)  -  参数.升序  /  相反的为降序
public int compareTo(Person o) {
    //自定义比较的规则     //比较两个人的年龄
    return this.getAge()-o.getAge();  }
Collections.sort(arr);   //在排序的对象类重写方法后,由Collection进行调用。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马