admin管理员组文章数量:1665601
- 什么java?一门人和计算机进行交互的语言。学会了,可以控制计算机帮助我们做东西。
- 计算机语言,好多种。Java,Python,php,,C语言,C#,C++,Java和他们区别
- 语言的区别:Java和Python主要做应用程序部分,软件。C和C++,嵌入式(硬件,芯片)
- 市场占有率,国内60%,全球20%。
- java的产生,1995年年底。Java之父是詹姆斯高斯林。(James Gosling)
- Java的分类:JavaSE(基础语法),JavaEE(SSM之前),JavaME(微机版)
- Java包括:jdk,jre和JVM。
- Jdk是java的开发的工具包。开发者安装,包含jre和jvm
- Jre:java的运行环境。客户现场使用的。安装了jdk还会自动安装一个jre。
- Jvm:java虚拟机(底层的东西)
- 类加载
- 调优
- 内存结构
- 垃圾回收
- 环境变量的配置
- Path:在任何地方都能执行java命令。编译交给开发工具了。我们配置的时候,需要配置成JAVA_HOME,因为jdk是java开发的基础,后续好多软件需要依赖jdk,他们没法直接用path里面提取jdk路径,公约 JAVA_HOME,指定到jdk的home路径下,根路径。要运行需要到bin路径下,path里面 %JAVA_HOME%\bin,tomcat,maven,oracle的sqldev
- Classpath:可以不用配置,编译用的,配置了,然后用记事本写的代码,在电脑任何地方都可以使用 javac命令(早都不用了)
- Java的关键字:
- 48个关键字:abstract、assert(断言)、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp(严谨,浮点型使用)、super、switch、synchronized、this、throw、throws、transient(临时忽略,实体类字段)、try、void、volatile(内存中使用)、while
- 3个特殊直接量:true、false、null
- 2个保留字:goto、const
- 一些常见单个的英文单词尽量也不要使用
- Java中的命名规范:(阿里的规范)
- 项目命名:全小写(也有部分公司使用小驼峰的,但是自从springbott出来后,必须是全小写,因为Springboot不支持项目名称有大写字母)
- 包的命名:全小写,并且是你所在的公司的域名的导致 baidu com.baidu.xiangmuming.mokuai
- 类的命名:大驼峰
- 方法的命名:小驼峰
- 变量的命名:idea推荐小驼峰(在以前是全小写,特别方便,避免了和数据库不区分大小写的麻烦),数据库不区分大小写,mysql全小写,Oracle全大写。这时出来了一个驼峰映射 userName,映射成user_name 把大写映射成 _小写,(在一些国企或者军队项目里面,也有变量名称全大写的,比较少)
- 常量:全大写,要是有多个英文单词,单词之间_
- 变量的长度:理论上255个长度,实际中变量的名字,两三个单词就Ok。实际中,2-16位,尽量使用英文的,或者汉语拼音,汉字的变量名称也行,但是尽量不要使用,因为汉字的编码太复杂
- 注释:
- 单行,可以在一行的任何位置出现 前半行是代码,后面是注释,注释一行单行一行写在上面。黑马的老师,他们年龄较大的。
- 多行注释:一般是方法或者类上面的注释,和单行注释是一样的,只是给开发人员看的,打成文档之后,就没有了。或者生成接口后,对方也看不到。
- 文档注释,这个打成文档或者接口后,客户也能看到,和文档注释作用一样。文档注释每一行前面都有注释,多行注释只有第一行和最后一行有注释。开发工具里面颜色不一样。
- 数据类型-8种基本类型(最高位是符号位,0表示正数,1表示负数)
- Byte:1个字节,8个比特位 范围 -128——127(-2^7—2^7-1)
01111111 10000000
-
- Short:2个字节:16个比特位
- Char:2个字节:16个比特位
- Int:4个字节:32个比特位: -2^31——2^31-1(10的9次方)
- Long:8个字节:64个比特位 -2^63——2^63-1(10的19次方)
- Float:4个字节:32个比特位 10的38次方
- Double:8个字节:64个比特位 10的308次方
- Boolean:javaapi中没有明确规定,在实际操作中,单个boolean类型变量按照int处理,但是boolean[]类型的数组是按照 byte类型处理,1个字节。其中严格意义来说,应该按照1个字节,因为 byte、short和char单运算都是提升为int
- 存储原理
- 数据在计算机底层是以二进制存储的,0和1,而且数据是有正负之分,最高位是符号位,0表示正数,1表示负数。一个数值,在计算机地城符号位占据一位了,数值就少了一位,以byte为例
0 1 1 1 1 1 1 1 byte的最大值 二级制和十进制的转换
2^0*1+2^1*+...+2^6*1 = 2^7-1
0 0 0 0 0 1 0 1 2^0*1+2^1*0+2^2*1= 5
an=2^n, 求Sn=an+1-1
1 1 1 1 1 1 1 1 +1 = 1 0 0 0 0 0 0 0 0 只能存储8位,1就没有了,溢出,8个0是就是0,一个数值+1等于0啊,8个1就是-1。-128就是1个1,后面7个0. -128 = 1 0 0 0 0 0 0 0 给-128减去1, 就变成0后面7个1了,是127了。 我们用的是byte类型,别的类型也一样,
最大值+1 = 最小值
最小值-1 = 最大值 物极必反(曲线)抛物线
-
- 测试的话,在开发工具里,必须用int或者long来测试,因为短整形都自动提升为int了 byte a = 2; byte b = a+2(错误的); byte c = a+=2;
- 最大值的大小排序 double > float > long >int,float只有4个字节,但是比long大,原因是存储的方式不一样,整型在计算中是以2进制存储,浮点型是以常数e的指数位的方式存储
- 底层二级制数据,数码的转换,正码,补码,反码
- 浮点型:小数点在计算机底层会丢失精度,不是100%精度存储
- 关于coreJava的东西,在面试问到了,要给人一种,我记得好像是这样子的,大概等,开发好多年没用过
- 算术运算符 + - * / % ++ -- ++和--变量在前后的区别x++ 和 ++x区别
- 赋值运算符= == ===(js中有,绝对相等) += sql+=”str” sql=sql+”str”;
- 比较运算符 > >= < <= 在计算中,尽量带着= 效率问题
- 位运算符 & | && || 单和双的区别:&前后条件都满足返回true,|前后只要有一个满足就返回true。&&,要是前面不满足,后面就没有意义了,结果都是不满足,&&后面不执行了,单&,后面还要执行,判断空指针,前面要是空,后面不能在执行,必须使用&&,要不然就真空指针了。 ||只要前面满足,后面不执行了。
- 复杂的算术运算:二级制里面在运算(计算中用的较多,一般在算法和游戏开发中较多)。 & | ^ ~(~单目运算符,其他都是双目运算符,也称双元运算符),三目运算符 ()?A :B
^异或,两个一样返回false,不一样返回true
- 位运算符中的(二进制中的) <<(左移,位数补0,移动很可能导致数值正负发生变化) >>(右移,正数补0,负数补1) >>>(无符号右移,最高位一律补0)。
- 逻辑条件:if if else else if switch case 大括号可以省略,但是有条件不能多于一行代码,并且这行代码中不能定义变量(代码要有意义),if和else 或者 elseif 都是一个整体,只执行其中某一块 if if 和一个if else (细心,不能落下那一部分),要是层次多一定要加注释 一次性把if和else语法写出来。Switch在使用的时候,jdk1.5之前不能是string类型,现在可以用string类型了。Case 里面一定要有break关键字,要是忘了,最后一个case的话,不影响,但是不是最后一个的话,会穿透,成为case穿透。Default可以有,也可以没有,就相当于else,可以没有的。
- 四大循环:
- For循环,有角标,或者在循环中还需要判断等,或者需要循环的话步长不是1的时候。
- forEach:不需要角标,直接遍历一下就Ok啦
- While:一般是结果集,没有角标,能根据指针判断里面还有么有下一个,rs结果集
- Do-while:用在欢迎页能,不管怎么样都需要先执行一遍。
- 循环的注意事项
- For循环和while无论什么情况下,都可以相互转化。
- 循环的大括号也可以省略,但是我们要养成良好的编程习惯。
- 循环的嵌套。想跳出本次循环,使用continue,跳出本层循环,使用break,想跳出整个循环,使用return(可以的,但是整个方法就结束了),需要给循环加标签,给循环起名字。 然后break aa;
- For的三个参数,声明参数,可以放在外面,然后++可以放在循环体里面,但是需要放在最后面。(和放在小括号里面效果一样,都是最后执行)
- 数组容器:变量(单一数值)—数组(同一种类型)—集合(map严格来说是映射)
- 数组的声明方法:String[] arr={};String[] a1 = new String[5];
- 数组的类型:一维数组和二维数组(上面的一维,二维就是数组套数组,后面有集合代替,但是前台是还是数组),前台传递过来的数组,在后台可以使用数组接收,也可以使用list来接收。后台我们的数组和list之间可以相互转换。 Arrays.asList
List.toArray
- 方法
- 方法名:小驼峰,见名识意
- 参数:形参和实参:形参是声明方法的时候定义的,形参有类型啊,名字随便叫。实参是使用的时候,传递的参数,这个不能定义类型等,要和调用的这个参数的形参类型一致。实参的类型不能大于形参。比如,形参定义的是List,实参可以传递list,或者ArrayList,但是不能传递collection。JS中(没有形参和实参之说,现在也有形参和实参,只不过形参不用定义类型)
- 返回值类型:(单返回),没有返回值 void 就Ok啦,构造方法是特殊的方法,没有返回值。不能用void。(构造方法严格意义上来说,不能参与重载的界定)
- 访问修饰符(权限修饰符)private 不写(default,friendly,不是关键字) protected public
- 构造函数
- 用来初始化,特殊的函数,没有返回值(不是void,是不写),不参与重载判断。(方法和类名相同,没有返回的声明,不能有return语句)
- 重写构造器的话,一定要把无参构造器重写一下
- 主方法:main方法 整个程序的入口的方法,java工程的入口。Boot工程也是main方法入口,这个关键字不能写错了。
- Public和static顺序可以调换
- Void和main不能调换
- 可以添加修饰符final,只要在void前面,都可以,三个修饰符可以随便写顺序,可以形式形参
- 参数是string类型的数组,只要满足string类型数组的写法都可以,参数的名字只是一个形参,可以随便叫 默认是args arguments 可以叫aaa bbb
- String[] args
- String args[]
- String... args
- final String[] args
- Main方法的赋值(需要使用命令行,在运行时赋值)
- Main方法能重写吗?不是重写,这叫隐藏(静态方法不能重写)
- 面向对象的三大特征(四大特征)
- 封装(实体类)
- 继承:子父类之间,把一些公共方法抽出去,放在父类中,后面谁想用,谁继承就Ok啦。类与类之间是单继承。接口与接口之间是多继承,类与接口多实现。
- 多态(抽象也是他的一部分,通过父类来new 子类的对象),两个具体的实现就是重载和重写
- 重载:同一个类里面:一同三不同 方法名相同 参数个数 类型 顺序不同,修饰符、返回值,异常无关
- 重写:子父类之间:方法名称相同、参数相同、(访问修饰符(大)、异常类型(小)、返回值类型(小)),两同两小一大
- String类的一些方法
- Stringbuffer和stringbuilder的区别:自己总结
- 常见方法:截取,打断,获取角标、替换等
- 尤其substring数据库的区别,数据库中是从什么地方开始,截取多少个长度,而java中是从什么开始到什么地方结束
- 关键字的
- Return:作为方法的返回值使用,也可以结束方法中的某些操作,结束方法,结束所有操作
- Break:中断当前操作,不在继续,只能中断一层操作,比如在多重循环中,他只能中断所在的那一层循环,不能中断全部循环,要是想中断全部循环,可以使用return,或者也可以给循环命名:给循环加标签,break 标签名。要是使用return直接终结方法了。
- Continue:中断当前操作的当前步骤,进入下一步
- Final:修饰的量为最终量,不可以被修改。他要是修饰的是变量,这个变量就相当于常量,要是修饰的是方法,这个方法不能重写,他要回修饰的类的,这个类不能被继承
- Finally:通过在异常的时候,为了最后释放资源,关闭流等操作,在面试中很喜欢用到。测试打印
- Finalized:垃圾回收的,我们几乎用不到。
- Static:修饰变量、修饰方法、类、静态代码块,静态导入,可以把要导入的类中静态方法导入,不用再使用类名、方法名的方式来调用,直接调用就OK啦。静态在项目中,能不用就别用了,因为他的生命周期太长了,只要第一次被使用后,就一直在内存里面直到项目停掉。把项目启动后一直用的东西可以用静态,其他的都不要静态。
- 方法的加载顺序(常见于面试的笔试题中,判断初始化顺序)
- 子父类的构造器
- 子父类的静态方法
- 子父类中的静态代码块
- 顺序:父类的静态代码>子类的静态代码块>父类构造器>子类构造器(四个一定会出现,要是接着new对象,接着父类构造器,再子类构造器)
- 集合类(自己整理),特点,层次关系,底层结构,jdk版本不同,底层结构不同,一值在优化底层,为了效率
- List(列表)
- Arraylist:底层是动态数组:有角标,查询快。底层数组默认大小10,当存储量达到10的时候,自动扩容,扩容(0.5倍),0.5倍向下取整,我们在定义的时候,是可以自定义数组的大小的。定义多少就是多少。
- Linkedlist:双向链表:当我们找到了链表的节点,需要修改直接修改,要是需要删除或者新增的话,直接把链的节点打开,然后把我们要新增的对象新增进去,再次把链连接上就OK啦。
- Vector:线程安全的操作,在我们实际开发中,99.99%的情况下,集合不用考虑线程安全问题,集合一般不允许是成员变量,集合都是局部变量,每个请求过来,都重新创建集合,也就是自己使用自己的。集合一般是用来存储数据的,不涉及线程问题。
- Set(集)
- Set的特点,无序,不可以重复,我们经常在去重的时候,可以使用
- Hashset:通过哈希算法存储的。哈希表(散列表)
- Treeset:二叉树存储
- Linkedhashset
- 有一个
- Map(映射)底层结构(自己整理,数组+链表,1.7之后加入了红黑树)
- Hashmap:默认大小是16,负荷因子0.75.当他达到 大小*负荷因子的时候进行扩容。扩容每次翻倍,大小是 16*2^n次方大小,负荷是通过时间和空间的取值的。空间复杂度和时间的复杂度
- Hashtable
- Treemap
- 好几个
- 空间复杂度和时间的复杂度
- List(列表)
- 常用类:
- String
- Arrays
- Math
- Java.lang里面的(包括异常等)
- 异常
- Exception:异常,软件可以处理
- 编译时异常:需要trycatch处理,不处理报错 所有和流有关的操作都是编译时异常。
- 运行时异常:空指针,算术异常,sql异常、角标越界等 runtimeexception
- 自定义异常:
- Error:错误,软件无法处理,栈内存溢出
- 内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
- 内存泄露:是指程序在申请内存后,无法释放已申请的内存空间。
- 抓取异常,直接处理
- 异常抛出
- 不能把异常抛给别的调用者,抛出的异常自己在别的地方一定要处理
- 我们开发中,终端代码不能抛异常,比如controller中,就不能抛异常
- 异常在抛的时候,不要都直接抛出最大的,不利于抓取处理
- 异常抛出
- 异常的状态码
- http:200,304,400,403,404,405,415,500,505,506(这些状态码分别是什么意思)
- Java中直接异常等没有编号
- Mysql:有编号的:
- Oracle也有编号:ora-12541等
- Exception:异常,软件可以处理
- 算法:
- 冒泡:排序(代码)
- 折半:查找(代码)
- 希尔:排序
- 哈希:算法
- 迭代:查找
- 递归:算法(代码,手写)
- 数据结构
- 数组
- 队列:先进先出
- 栈:先进后出 递归 进栈(压栈),出栈(弹栈),内存溢出(取决于你的电脑内存和电脑分配给Jvm的内存)
- 图
- 链表
- 树
- 树(二叉树),java中平常所说的树就是二叉树
- Ztree第一个树(不是二叉树)
- 根节点(最上面的节点)、子节点(有孩子有父亲的节点)、叶子节点(没有孩子的节点)
- 树的深度:从祖宗到叶子的层级
- 二叉树:最多只有有两个子节点
- B树和B+树(不是二叉树)
- 平衡二叉树:左右子树的高度相差不超过 1 的树为平衡二叉树
- 红黑树:红黑树是一种特定类型的二叉树,它是在计算机科学中用来组织数据比如数字的块的一种结构。红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但对之进行平衡的代价较低, 其平均统计性能要强于AVL
版权声明:本文标题:Corejava知识点 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1725926579a1049417.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论