HTML基础及Javase部分梗概

作者  Muggle

Html

Version:1.0 StartHTML:0000000105 EndHTML:0000015425 StartFragment:0000000127 EndFragment:0000015407

1.HTML 是什么?

HTML 是超文本标记语言,我们把一些文字,图片,音频,视频通过标记 标记起来,

<标记>文本,图片,音频,视频 </标记>

 

这些标记形成的一套语言,就叫超文本标记语言(HTML)

这些超文本标记语言可以被浏览器解析执行,解析完成后,形成一个页面,更容易被用户接受。

 

2.HTML页面的结构

a. doctype制定了浏览器解析时按哪个版本来解析。

<!doctype html>

 浏览器就按照HTML5这个版本解析

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

浏览器按照HTML 4.01 Transitional版本来解析

 

b.页面的结构

<html>

  head 标签里面的设置一般用于告诉浏览器解析前的配置,这些配置一般可以通过meta(元标签)标签来配置

  <head>

     // 1.设置页面编码

     <meta charset="utf-8" />

     // 2.seo 优化

     <meta name="keywords" content="..." />

     <meta name="description" content="..." />

     // 3.设置视口

     <meta name="viewport" content="width=device-width,initial-scale=1.0">

 

     // 4.标题

     <title>设置页面标题</title>

  </head>

 

  <body>

   页面需要显示的内容...

</body>

</html>

 

解析:

width=device-width:浏览器的窗口和设备屏幕大小一样。

initial-scale=1.0:指定缩放比例,1.0表示不允许缩放。

 

课外阅读:https://developer.mozilla.org/zh-CN/docs/Mobile/Viewport_meta_tag

 

 

3.辅助开发的快捷键

1.快速构建HTML文档结构

!+Tab  => 快速构建HTML文档结构

 

2.快速构建标签结构

标签名+tab

 

4.标签的分类

根据排版的需要,我们需要把标签分成两部分。

一种是块标签,一种是行内标签。

 

 

5.块标签

块标签:

1.独占一行(不管内容是不是一行,块标签都占据一行)

2.可以设置宽高的

 

div:div是无语义标签(没有任何标签意义),一般作为容器使用,主要用于布局。

无语义是相对于有语义来说的。

 

h1-h6:用于显示标题

 

辅助快捷键(Hbuilder)

ol>li+tab

ol>li*3+tab

div{我是div$}*3 + tab

 

ol:有序列表

ul:无序列表

dl:定义列表

 

table:表格,表格是由行构成的,行是由列(单元格)构成的

<table border="1">

           <!--第一行-->

           <tr>

               <td>111</td>

               <td>222</td>

               <td>333</td>

               <td>444</td>

           </tr>

           <!--第二行-->

           <tr>

               <td>111</td>

               <td>222</td>

               <td>333</td>

               <td>444</td>

           </tr>

       </table>

 

单元格的合并

a.跨列,colspan(column span),一定是向右跨列,没有向左跨列

b.跨行 rowspan(row span) 一定是向下跨行,没有向上跨行。

 

P 段落标签

 

br 换行

 

Version:1.0 StartHTML:0000000105 EndHTML:0000199188 StartFragment:0000000127 EndFragment:0000199170

行内标签

行内标签:

1.在一行内显示,如果一行中的剩余空间不足,行内标签会被挤到下面一行显示

2.内容撑开宽高,不能设置宽高。

 

解析:

默认情况下,行内标签在一行内并排排列,默认多个行内标签之间是有间隙的。这个间隙是如何形成的?

间隙是由回车换行引起的。

 

 

span

无语义标签,一般作为容器使用。

var strong em

 

 

img:显示图片

src

alt

title

 

img可以设置宽高的,原因?

可替换标签:标签显示的内容是由属性决定的,而不是由内容决定的标签,我们称之为可替换标签

<span>aaa</span>

<img src="123.png"></img>

 

img是可替换标签,可替换标签是可以设置宽高的。

 

表单相关

<form action="" method="post">

 </form>+(align 调节位置)

 

action:把表单提交到后台的处理程序

method:表单提交的方式,post提交get提交

 

form是块标签

 

input相关

type:

text 单行文本

password 密码框

radio单选功能(通过name来实现单选)

checkbox 复选框

file 文件上传

hidden 隐藏属性

submit 按钮

reset 重置

button 按钮(不常用)

 

textarea

select>option(selected)(disabled)

a标签

 

<a href=""></a> ./引用同文件夹下内容./x./x./x.html引用方式 绝对引用——地址全称

title 提示文本 

锚点(键值对)#key id="值"

<a href="#two">

<div id="two" >

 

Version:1.0 StartHTML:0000000105 EndHTML:0000218314 StartFragment:0000000127 EndFragment:0000218296

css 引入方式

cascading style Sheets (美化页面)

1.css 有三种引入方式

a. 外部引入

<link href="main.css">

 

优点:

缺点:

 

b.head 引入

<head>

 <style>

    </style>

</head>

 

优点:

缺点:

 

c.style 标签内引入

 <div style="">

 

优点:

缺点:

 

2.选择器

a.ID 选择器

 

b.类选择器

 

c.标签名选择器

 

d.后代选择器

 

e.群组选择器

 

Version:1.0 StartHTML:0000000105 EndHTML:0000007980 StartFragment:0000000127 EndFragment:0000007962 CSS 优先级

 

当相同的css属性作用于同一个标签的时候,css优先级就产生了。我们根据css选择器可以把优先级分成4类

 

a(1000)

 b(100) 

c(10) 

d(1)

style 

 id选择器 

类选择器 

标签名选择

优先级没有继承性

 

注意:

a.当优先级相同时,谁离HTML结构越近,谁的优先级就越高(近水楼台先得月)

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

           

       #main span{

           color: red;

       }

       #main span{

           color: blue;

       }

       </style>

   </head>

   <body>

       <div id="main">

           <span>test</span>

       </div>

   </body>

</html>

 

 

如何提升优先级的问题?

1.style

2.!important

当后面的css优先级和上面的优先级一样或者更高的时候,如果我们还想以上面css属性为准时,这个时候用!important来提供优先级

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

           

       #main span{

           color: red !important;

       }

       #main .test{

           color: blue;

       }

       

       </style>

   </head>

   <body>

       

       <div id="main">

           <span class="test">test</span>

       </div>

       

       

   </body>

</html>

注意,!important提升过的优先级比style还高。

 

作业:403642308@qq.com

空格代码 

 

 

 

 

 

 

Version:1.0 StartHTML:0000000105 EndHTML:0000007980 StartFragment:0000000127 EndFragment:0000007962 CSS 优先级

 

当相同的css属性作用于同一个标签的时候,css优先级就产生了。我们根据css选择器可以把优先级分成4类

 

a(1000)

 b(100) 

c(10) 

d(1)

style 

 id选择器 

类选择器 

标签名选择

优先级没有继承性

 

注意:

a.当优先级相同时,谁离HTML结构越近,谁的优先级就越高(近水楼台先得月)

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

           

       #main span{

           color: red;

       }

       #main span{

           color: blue;

       }

       </style>

   </head>

   <body>

       <div id="main">

           <span>test</span>

       </div>

   </body>

</html>

 

 

如何提升优先级的问题?

1.style

2.!important

当后面的css优先级和上面的优先级一样或者更高的时候,如果我们还想以上面css属性为准时,这个时候用!important来提供优先级

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

           

       #main span{

           color: red !important;

       }

       #main .test{

           color: blue;

       }

       

       </style>

   </head>

   <body>

       

       <div id="main">

           <span class="test">test</span>

       </div>

       

       

   </body>

</html>

注意,!important提升过的优先级比style还高。

 

作业:403642308@qq.com

空格代码 

 

 

Version:1.0 StartHTML:0000000105 EndHTML:0000001487 StartFragment:0000000127 EndFragment:0000001469 hover 鼠标悬浮触发

hover 和relative的组合,将鼠标放在影子上触发

background-color:rgba() rgb()

box-shadom

sass

Version:1.0 StartHTML:0000000105 EndHTML:0000121371 StartFragment:0000000127 EndFragment:0000121353

Margin对块的垂直方向有塌陷 参数auto-自动调整居中 margin在块元素中垂直方向表现不好

padding 性质和margin 类似 border solid:实线 * dashed:虚线 * dotted:点线 float-浮动,改变块元素和行内元素属性 怪异盒 box-sizing:border-box  删除多余空行快捷键ctril+d

1.盒模型的概念(A)

 

盒模型(box)指浏览器在渲染元素(标签)是,把它们渲染成一个一个的盒子,这些盒子在页面上占据一定的空间(宽和高)。

 

浏览器渲染的盒模型

根据渲染的图,我们可以知道盒模型包含content(内容),padding,border,margin

注意:当我们设置元素的width和height时,是指元素的内容的宽高。

 

2.Margin

margin用于设置元素和元素之间的间距,也叫一个元素的外边距(外留白)。

a.margin的方向

margin有四个方向,我们可以分别对四个方向设置对应的margin。

margin-top,margin-bottom,margin-left,margin-right,可以单独制定一个方向的margin

 

b.margin的写法

1】辅助快捷键

w100+tab

h100+tab

2】四种写法

(1) margin:20px 表示元素4个方向的margin都是20px

(2) margin :10px(上下)    20px(左右)

(3) margin: 10px(上)  20px(左右)  30px(下)

(4)margin: 10px(上) 20px(右) 30px(下) 40px(左),记忆方法:顺时针

 

3】margin: 0 auto;

让块元素在容器中水平居中

 

注意:body默认有8px的margin

 

c.margin的特殊情况

1】平级关系margin在垂直方向是会塌陷的,数值小的向数值大的塌陷。

 

代码:margin的塌陷

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

       body{

           margin: 0px;

       }

       #main{

 

           height: 100px;

           background-color: skyblue;

           margin-bottom: 10px;

       }

       #main2{

           margin-top: 30px;

           height: 200px;

           background-color: coral;

       }

       </style>

   </head>

   <body>

       <div id="main"></div>

       <div id="main2"></div>

   </body>

</html>

 

总结:1.margin在垂直方向会塌陷。2.main和main2是平级关系(兄弟关系)

 

2】包含关系的margin在垂直方向的塌陷,小的向大的塌陷。

 

 

包含关系margin的塌陷

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

       body{

           margin: 0;    

       }

       #outer{

           margin-top: 20px;

           width: 300px;

           height: 500px;

           background-color: skyblue;

       }

       

       #inner{

           margin-top:10px;

           width: 200px;

           height: 300px;

           background-color: coral;

       }

       </style>

   </head>

   <body>

       <div id="outer">

           <div id="inner"></div>

       </div>

   </body>

</html>

 

d.margin在行内元素上的表现

1.margin在水平方向不塌陷

代码:

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

       #main1,#main2{

           border: 1px red solid;

       }

       #main1{

           margin-right: 20px;

       }

       #main2{

           margin-left: 10px;

       }

       </style>

   </head>

   <body>

       <span id="main1">span1</span><span id="main2">span2</span>

   </body>

</html>

 

2.margin在行内元素上,左右方向的margin表现良好,上下方向的margin表现不好。

 

代码:

<!DOCTYPE html>

<html>

   <head>

       <meta charset="UTF-8">

       <title></title>

       <style type="text/css">

       body{

           margin: 0px;

       }

       #main1,#main2,#main3{

           border: 1px red solid;

       }

       /*1.水平的margin不塌陷*/

       #main1{

           margin-right: 20px;

       }

       #main2{

           margin-left: 10px;

       }

       

       /*2.行内元素margin在上下方向表现不好*/

       #main3{

           margin-top: 20px;

           margin-bottom: 30px;

       }

       </style>

   </head>

   <body>

       <span id="main1">span1</span><span id="main2">span2</span>

       

       <span id="main3">

           main3

       </span>

       <div style="border: 1px blue solid;">test</div>

   </body>

</html>

 

Version:1.0 StartHTML:0000000105 EndHTML:0000057944 StartFragment:0000000127 EndFragment:0000057926 Padding

 

1.基本概念

padding用于设置内容和边框之间的间距,也叫内边距(内留白)

 

 

2.padding在块元素和行内元素的表现

a.padding 在块元素表现良好

b.padding在行内元素的左右方向表现良好,上下方向表现不好。

 

 

Version:1.0 StartHTML:0000000105 EndHTML:0000002367 StartFragment:0000000127 EndFragment:0000002349 Border

用于设置元素的边框

 

/*分开写法*/

border-top-width: 1px;

border-top-color: green;

/*

 * solid:实线

 * dashed:虚线

 * dotted:点线

 */

border-top-style: solid;

/*简写*/

border-left:1px red solid;

border:1px red solid;

 

Version:1.0 StartHTML:0000000105 EndHTML:0000001740 StartFragment:0000000127 EndFragment:0000001722 display 属性

 

display 用于改变元素的显示性质

block:让元素以块元素性质显示

inline:让元素以行内元素的性质显示

none:元素不显示,页面上完全没有元素的位置

 

Version:1.0 StartHTML:0000000105 EndHTML:0000120124 StartFragment:0000000127 EndFragment:0000120106 标准盒模型

 

所谓标准盒模型

盒模型计算宽度或高度时

 

total width = content(内容) width + padding width(左右)+border width(左右)+margin width(左右)

 

 

 

2.怪异模式

当我们设置width或者高度height时,这个宽高是包含border,padding,content部分。

所有我们在求total width = width + margin

 

 

 

注意:,你在修改border或者是padding的时候,会挤内容。

Version:1.0 StartHTML:0000000105 EndHTML:0000041822 StartFragment:0000000127 EndFragment:0000041804 float 排列规则另起一行受上一行的高度控制

margin的auto只能对块元素起作用

Float

 

1.float的概念

 

float 就是让一个元素A在其容器中浮动到左边或者右边,

float让元素A脱离标准流,也就是说,A在容器中不占位置,但是不会超越父元素。

 

 

2.标准流的概念:

所谓标准流(normal flow),就是

块元素独自一行显示,能设置宽高,支持margin、padding

行内元素在一行内显示(并排排列),不能设置宽高,margin/padding在水平方向表现良好。

 

 

3.浮动的排版

假设容器中由很多元素A1,A2,A3...An,如果这些元素都浮动,那么如何浮动?

a.如果A1...An 都是左浮动,A1...An在容器中一个紧接着一个并排排列,当容器空间不足时,其中一个元素Am会另起一行,然后Am,Am+1...An 一个紧贴着一个排列

 

b.如果A1...An 都是右浮动,A1...An在容器中一个紧贴着一个并排排列(右向左),当容器空间不足时,其中一个元素Am会另起一行,然后Am,Am+1...An 从右向左一个紧贴着一个排列

 

 

4.float 对块元素和行内元素的影响

a.对行内的影响

能设置宽高,同时指出margin、padding

 

b.对块元素的影响

让块元素并排排列

在不设置宽高的情况下,内容撑开宽高。

 

总结:

float 让块元素具有行内元素的特性了,让行内元素也具有块元素的特性了。

float 改变了元素的特性。

 

 

5.float布局

 

a.布局过程中,高度不一样的元素,换行时出现的情况

情况一:高度一次递增

情况二:高度一次递减

 

课外导读:双飞翼,圣杯布局。

 

 

Version:1.0 StartHTML:0000000105 EndHTML:0000018993 StartFragment:0000000127 EndFragment:0000018975 Float对标准流的影响

 

Float对标准流的影响

 

1.float让元素脱离标准流

2.脱离标准流的元素在父元素不占空间,它下面的标准流就占据浮动的位置。

 

3.标准流中的文字是围绕着float的

 

4.标准流中的行内元素也是围绕着浮动元素

Version:1.0 StartHTML:0000000105 EndHTML:0000036421 StartFragment:0000000127 EndFragment:0000036403


Clear

 

clear 属性用于清理浮动

none

left

right

both

 

解析:

clear属性用于清理浮动,在层次结构上,不允许某个元素A的左边的z轴的上方有浮动。

 

 

 

overflow: hidden; 

 clear: left;

#main:after{

content: "";

display: block;

/*border: 1px purple solid;*/

clear: both;

 

Version:1.0 StartHTML:0000000105 EndHTML:0001165448 StartFragment:0000000127 EndFragment:0001165430

 

 

Version:1.0 StartHTML:0000000105 EndHTML:0000001014 StartFragment:0000000127 EndFragment:0000000996 overflow,处理超出容器部分

产生滚动条scroll;隐藏 hidden;

Version:1.0 StartHTML:0000000105 EndHTML:0000453126 StartFragment:0000000127 EndFragment:0000453108

Version:1.0 StartHTML:0000000105 EndHTML:0000005461 StartFragment:0000000127 EndFragment:0000005443 1. 评估模块的时间

nav-section

 

2.一边做一遍总结

1.遇到问题

解决方案a

解决方案b

 

3.项目需要学会的软技能

1.沟通能力(演讲)

2.独立思考并解决问题的能力

那些光喷玩游戏不学习的真是够了,实用一点好吗?
说实话,上个世纪的古董机就别扯淡了,性能还是需要的,不然光是VS的启动时间就能让你吃顿饭,我14年花四千五买的笔记本,15年为了VS特意换了SSD,因为机械硬盘启动VS实在太慢了。
大学期间当然不可能一直写代码,其他需求也是要有的,所以就配置一个4000元左右的windows超极本,便携,就像我的笔记本,还好我的本很轻,不然背着到处跑很累的,就光从实验室到寝室的路就嫌弃它沉,屏幕要大,15寸的,要不然很费眼睛,小屏幕简直不能忍,超极本跑游戏什么的很吃力,不过写代码就没问题,最重要的是超极本一般用低压cpu,续航时间够长,在宿舍停电以后,足够你写代码到天亮,如果要舒适度的话,建议外接键盘,机械最好,不要青轴,会吵到别人,最好在马云家买一个垫高的支架,懒得买用书也行(反正书都够厚,而且随时能翻),不垫高的话笔记本写代码总低头看屏幕脖子会很疼,垫高之后视线和屏幕水平最好,写代码记得给自己上个闹钟,两个小时起来活动活动,眺望一下。



作者:梁秋实
链接:https://www.zhihu.com/question/35337887/answer/101729238
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

问题:背景图铺不满浏览器窗口

解决方案:不设置容器宽度

问题: 购物车的文字无法设置

解决方案:用背景图代替

问题: 需要把图片和列表元素放在同一行内

解决方案:1.display:inline-block

2.用re模式

3.将图片用DIV围绕再全部float

问题:

搜索框里面有两对关键字

解决方案:

参考百度搜索框设置

-用hover

问题:图片无法设置宽高,原因书写格式不规范发生错误,导致图片被另外一个div包围

解决方案:编码过程要保持代码工整,结构清晰(重要)

 

 

Java特点

1. 跨平台,可移植性

2. Java安全性高

3. 面向对象编程

4. 相对C++简单

5. 高性能

6. internet分布式设计

7. 多线程

8. 健壮性,去掉c++不健康的部分。

 

Java运行机制

编写源文件——利用javac(编译器)编译成.Class的字节码文件——用虚拟机解释执行。

JVM JDK JRE

JVM ——Java virtual machineJava虚拟机构)。

定义了指令集,寄存器集,结构栈,垃圾收集堆,内存区域。边解释边运行,速度受影响。

JRE——Java runtime environment JVM+库函数+运行所需要的文件。

JDK Java development kit kit翻译为工具

数据类型

 

什么是变量?

变量就是一个数据的存储空间(内存)这个空间在程序执行过程中值会发生变化。我们这个内存空间叫做变量的空间,这个内存空间的名字叫做变量。

3】变量的命名规则

1. 变量以字母数字、_、$组成

2. 变量的名字不能以数字开头

3. 变量名不能是java系统关键字

 

变量命名规范

1. 变量一定要见名知意(age,name

驼峰命名法来命名变量(首字母小写,后续具有单个意义的词(单词大写

局部变量

方法中或者普通代码块中声明的变量局部变量有作用域的概念,在作用域中可见,出了作用域不可见。

成员变量

成员变量特指类的成员变量,声明的位置方法外,类的内部。

注意:成员变量如果没有初始化jvm会自动给这些成员变量初始化。

成员变量的初始化规则

{}这个就是块

 

运算符优先级

1——() 2——!+ - 3——~ 4——++ -- 5——*/% 6——+- 7<<>>

8关系运算符 9位运算符 10逻辑运算符 11?: 12赋值运算符,扩展运算符;

逻辑运算符优先级!>||>&&

a+++++a

分析图

 

逻辑运算是短路运算。

键盘输入

import java.util.Scanner

Scanner (object)=new Scanner(System.in);

注:一个对象一次输入,并且有先后顺序。

循环

For(){}——while(){}——do{}while();Switch(){case value: langrage;  break;default:langrage;}

Break ——跳出循环,continue——结束本次循环;

Overload ——双胞胎模式;

避免使用递归>用迭代代替递归;

面向对象

概念——

面向对象与面向过程的理解,两种思想就是字面上的意思,一种是面向做事情的过程来考虑问题,一种是面向做事情所涉及的对象来考虑问题。但解释起来比较麻烦。面向过程,就是将一件事情划分为几步,一步一步去执行,这种思想适合微观的掌控。面向对象,不妨说为面向工具,做事情需要用到哪些工具,对工具就行解释分析,下达任务,然后让工具之间进行排列组合,完成任务,这种思想适合宏观上的调控。面向对象思想,类似于系统的思想,又和系统这个概念又有明显区别。系统还是一种线性思维,而面向对象是平行思维。

         举例来说,完成从饮水机接水喝水这个任务;面向过程思想是这样的,第一步拿茶杯,第二步接水,第三步,喝水;这是大部分人的思维方式,而面向对象思维方式是这样的,这一任务过程中所谓的对象有人、茶杯、饮水机,那么人负责接水和喝水,茶杯负责传递水,饮水机负责存储水和放水,中间的操作由对象协同完成。当用面向对象的思想去考虑一件比较小的事情时,看上去会显得复杂,但去考虑比较复杂的事情时,面向对象的思想有很大优势--面向对象更擅长于宏观调控。

         在编程里面的体现为,多个方法,或者说是函数(function)--组成一个类(class),用这个class作为一个工具去和其他class去处理问题。这也是c++c的区别;c处理数据,是将多个函数线性的列下来,程序从头跑到尾,数据处理完成。c++处理数据,将相关函数打包封装为一个类,多个类进行排列组合处理数据,Java作为c++-,和c++表现不同,灵魂是一样的

 

继承

子类继承父类对象

Super(),this.两个关键字

构造器问题

子类构造器第一行开头总是Super(),有参则要显性调用——Super(i,j)

Instanceof 运算符,重写(override

toString方法返回hashcode

属性/方法查找顺序:(比如:查找变量h)

      1. 查找当前类中有没有属性h

      2. 依次上溯每个父类,查看每个父类中是否有h,直到Object

      3. 如果没找到,则出现编译错误。

      4. 上面步骤,只要找到h变量,则这个过程终止。

构造方法调用顺序:

      构造方法第一句总是:super(…)来调用父类对应的构造方法。所以,流程就是:先向上追溯到Object,然后再依次向下执行类的初始化块和构造方法,直到当前子类为止。

      注:静态初始化块调用顺序,与构造方法调用顺序一样,不再重复。

封装的具体优点

     1. 提高代码的安全性。

     2. 提高代码的复用性。

     3. “高内聚:封装细节,便于修改内部代码,提高可维护性。

     4. “低耦合:简化外部调用,便于调用者使用,便于扩展和协作。

关键字

      1. private 表示私有,只有自己类能访问

      2. default表示没有修饰符修饰,只有同一个包的类能访问

      3. protected表示可以被同一个包的类以及其他包中的子类访问

      4. public表示可以被该项目的所有包中的所有类访问

 自撸代码,注意toString方法和private关键字。

多态的要点

      1. 多态是方法的多态,不是属性的多态(多态与属性无关)

      2. 多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。

      3. 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

比如  animal s1 =new dog();

   animal s2= new dark();

Functionanimal s;

Functions1; Functions2;

 Dog dog = (Dog)a2;//向下需要强制类型转换

        dog.seeDoor();

多态的转型问题

 父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。

      向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!

Final的使用

Final 修饰 变量使他成为常量;修饰方法为私有方法,不能被重写;修饰类,私有类,不能被继承。

 

抽象类

abstract修饰的类为抽象类;抽象类只能有抽象方法,抽象方法用abstract修饰 子类继承抽象类必须要重写抽象方法。

抽象类可以写有参有返回值的抽象方法,抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用

接口

接口用interface创建

接口只能有常量。

1. 访问修饰符:只能是public或默认。

      2. 接口名:和类名采用相同命名机制。

      3. extends:接口可以多继承。

      4. 常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。

      5. 方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract。

      6. 子类通过implements来实现接口中的规范。

      7. 接口不能创建实例,但是可用于声明引用变量类型。

      8. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。

      9. JDK1.7之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。

      10. JDK1.8后,接口中包含普通的静态方法

注意方法格式,没有{},接口没有构造器,

内部类

Outer inner

内部类分类

成员内部类,静态内部类,匿名内部类,局部内部类。

部分要点

 i. 非静态内部类必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象。

      ii. 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员。

      iii. 非静态内部类不能有静态方法、静态属性和静态初始化块。

      iv. 外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例。

 V 内部类里方法的局部变量:变量名。

      vi. 内部类属性:this.变量名。

      IX 外部类属性:外部类名.this.变量名

String基础

String 不可变字符序列

符号"+"把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式

"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接

 Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。

Char charAt(int index);   Boolean equals(String other)  int indexOf(String str)

lastIndexOf()  int length()  Stringreplace()  Boolean startsWith()  String substring()

String tolowerCase()   String toupperCase()  String trim(0

模板方法模式

写好框架,将方法步骤写到到子类,然后父类调用子类的方法,实现代码;需要修改时,修改子类方法即可,无需改变父类结构。

回调模式

回调函数——A类继承接口HH有回调方法H.h(目的是封装,防止B修改A的其他属性与方法),A类的一个属性为B类(为什么不直接NEW一个)B类中有一个bH. h)的方法回调h方法完成调用与回调。

异常

所有异常都是派生于throwable 的实例,throwable

checkedException

try-catch-finally捕获异常(用try来执行一段程序,如果出现异常,系统抛出一个异常对象,可以通过他的类型来捕获并处理他,最后通过finally来为异常处理提供一个统一出口);示意图:

  程序首先执行可能发生异常的try语句块。如果try语句没有出现异常则执行完后跳至finally语句块执行;如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。catch语句块可以有多个,分别捕获不同类型的异常。catch语句块执行完后程序会继续执行finally语句块。finally语句是可选的,如果有的话,则不管是否发生异常,finally语句都会被执行。

catch

      n-每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。

      n-常用方法,这些方法均继承自Throwable类 。

          u-toString ()方法,显示异常的类名和产生异常的原因

          u-getMessage()方法,只显示产生异常的原因,但不显示类名。

          u-printStackTrace()方法,用来跟踪异常事件发生时堆栈的内容。

      n-catch捕获异常时的捕获顺序:

          u-如果异常类之间有继承关系,在顺序安排上需注意。越是顶层的类,越放在下面,再不然就直接把多余的catch省略掉。 也就是先捕获子类异常再捕获父类异常

示例:

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

public class Test8 {

    public static void main(String[] args) {

        FileReader reader = null;

        try {

            reader = new FileReader("d:/a.txt");

            char c = (char) reader.read();

            char c2 = (char) reader.read();

            System.out.println("" + c + c2);

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            try {

                if (reader != null) {

                    reader.close();

                }

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    }

}

数组

1. 数组声明时未实例化对象。

2. 声明一个数组的时间并没有数组被创建。

3. 构造一个数组必须指定长度。

For-each方法——for(type s:m){“将一个type类型的数组m赋给s”}

数组拷贝方法static void arraycopy(object src,int srcpos,object dest,int destpos, intlength) 该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素。

数组方法的Arrays类

Arrays.sort(a)——对数组a进行升序排序;

数组元素定位查找

int find;

int a[]={1,5,3,8,4};

find=Arrays.binarySearch(a,8);

//括号中前面的a为你将要查询的数组,8为想要查询的数字

//find的值为查询的数字在数组中的下标

数组的打印

int a[]={1,5,3,8,4};

String aString =Arrays.toString(a);//String 前的a和括号中的a均表示数组名称

System.out.println(aString);//String 前的a表示数组名称

查看数组是否有特定值

int a[]={1,5,3,8,4};

boolean b=Arrays.asList(a).contains(1);

System.out.println(b);//注意:b的值只可能是true或false

· sort(对数组排序)

· binarySearch(二分法查找数组中的元素)

· equals(比较两个数组是否相等)

· fill(对数组中的指定位置填充相同的内容)

· copyOf(数组拷贝)

· asList(将数组转换为一个固定的List对象)

· hashCode(计算数组的哈希值)

· toString(以特定格式输出数组

冒泡排序法。

Public static void mianString[]args{

Int[] x1{9,8,7,3,5,4,1,6}

For(int i=0;i<x1.length;i++){

For(int j=0;j<x1.length-I-1;j++){

Int s1;

If(x1[i]>x1[i+1]){

S1=x1[i];

X1=X1[I+1];

X1[I+1]=S1

}

}

}

}

常用类

包装类

 

,除了CharacterBoolean以外,其他的都是数字型数字型都是java.lang.Number的子类。Number类是抽象类,因此它的抽象方法,所有子类都需要提供实现。Number类提供了抽象方法:intValue()longValue()floatValue()doubleValue(),意味着所有的数字型包装类都可以互相转型

包装类缓存问题

  整型、char类型所对应的包装类,在自动装箱时,对于-128~127之间的值会进行缓存处理,其目的是提高效率。

缓存处理的原理为:如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程发生时(或者手动调用valueOf()),就会先判断数据是否在该区间,如果在则直接获取数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法来创建对象。

Stringbuilder,StringBuffer

Stringbuilder

常用方法列表

 1. 重载的public StringBuilder append(…)方法

        可以为该StringBuilder 对象添加字符序列,仍然返回自身对象。

      2. 方法 public StringBuilder delete(int start,int end)

        可以删除从start开始到end-1为止的一段字符序列,仍然返回自身对象。

      3. 方法 public StringBuilder deleteCharAt(int index)

        移除此序列指定位置上的 char,仍然返回自身对象。

      4. 重载的public StringBuilder insert(…)方法

        可以为该StringBuilder 对象在指定位置插入字符序列,仍然返回自身对象。

      5. 方法 public StringBuilder reverse()

        用于将字符序列逆序,仍然返回自身对象。

      6. 方法 public String toString() 返回此序列中数据的字符串表示形式。

      7. 和 String 类含义类似的方法:

1

2

3

4

5

6

public int indexOf(String str)

public int indexOf(String str,int fromIndex)

public String substring(int start)

public String substring(int start,int end)

public int length() 

char charAt(int index)

时间处理相关类

Date +calendar

Date 时间对象,单位毫秒,19700101开始计时,Data()不传值为系统时间

方法有:

 1. Date() 分配一个Date对象,并初始化此对象为系统当前的日期和时间,可以精确到毫秒)。

      2. Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

      3. boolean after(Date when) 测试此日期是否在指定日期之后。

      4. booleanbefore(Date when) 测试此日期是否在指定日期之前。

      5. boolean equals(Object obj) 比较两个日期的相等性。

      6. long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

      7. String toString() 把此 Date 对象转换为以下形式的 String:

        dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun、 Mon、Tue、Wed、 Thu、 Fri、 Sat)。

 DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现。

 

Calendar

  Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。

      GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

菜鸟雷区

      注意月份的表示,一月是0,二月是1,以此类推,12月是11。 因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表示月份:JANUARY、FEBRUARY等等。

Math

     java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。如果需要更加强大的数学运算能力,计算高等数学中的相关内容,可以使用apache commons下面的Math类库。

Math类的常用方法:

      1. abs 绝对值

      2. acos,asin,atan,cos,sin,tan 三角函数

      3. sqrt 平方根

      4. pow(double a, double b) a的b次幂

      5. max(double a, double b) 取大值

      6. min(double a, double b) 取小值

      7. ceil(double a) 大于a的最小整数

      8. floor(double a) 小于a的最大整数

      9. random() 返回 0.0 到 1.0 的随机数

      10. long round(double a) double型的数据a转换为long型(四舍五入)

      11. toDegrees(double angrad) 弧度->角度

      12. toRadians(double angdeg) 角度->弧度

如果使用Math.random()计算过于复杂的话,我们可以使用例外一种方式得到随机数,即Random类,这个类是专门用来生成随机数的

import java.util.Random;

public class TestRandom {

    public static void main(String[] args) {

        Random rand = new Random();

        //随机生成[0,1)之间的double类型的数据

        System.out.println(rand.nextDouble());

        //随机生成int类型允许范围之内的整型数据

        System.out.println(rand.nextInt());

        //随机生成[0,1)之间的float类型的数据

        System.out.println(rand.nextFloat());

        //随机生成false或者true

        System.out.println(rand.nextBoolean());

        //随机生成[0,10)之间的int类型的数据

        System.out.print(rand.nextInt(10));

        //随机生成[20,30)之间的int类型的数据

        System.out.print(20 + rand.nextInt(10));

        //随机生成[20,30)之间的int类型的数据(此种方法计算较为复杂)

        System.out.print(20 + (int) (rand.nextDouble() * 10));

    }

}

  java.io.File

代表文件和目录。 在开发中,读取文件、生成文件、删除文件、修改文件的属性时经常会用到本类。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaSE(Java Standard Edition)是Java平台的标准版,提供了Java语言的核心库和基础功能。下面是一些JavaSE基础知识的介绍: 1. Java语言特性:Java是一种面向对象的编程语言,具有简单、可移植、安全、高性能等特点。它支持自动内存管理(垃圾回收)、异常处理、多线程等特性。 2. 数据类型:Java提供了基本数据类型(如整型、浮点型、字符型、布尔型)和引用数据类型(如类、接口、数组)。可以使用变量来存储和操作数据。 3. 控制流程:Java提供了条件语句(如if-else、switch)、循环语句(如for、while、do-while)和跳转语句(如break、continue)来控制程序的执行流程。 4. 类和对象:Java是一种面向对象的语言,所有的代码都必须定义在类中。类是对象的模板,对象是类的实例。可以使用类来创建对象,并通过对象调用类中的方法和访问类中的属性。 5. 继承和多态:Java支持继承机制,一个类可以继承另一个类的属性和方法。通过继承可以实现代码的重用和扩展。多态是指同一个方法在不同的对象上有不同的行为。可以通过方法重写和方法重载来实现多态。 6. 异常处理:Java提供了异常处理机制,可以捕获和处理程序中的异常。通过try-catch-finally语句块可以捕获异常并进行相应的处理,保证程序的稳定性和可靠性。 7. 输入输出:Java提供了丰富的输入输出功能,可以通过标准输入输出、文件操作、网络通信等方式进行数据的输入和输出。 8. 集合框架:Java提供了一套集合框架,包括List、Set、Map等接口和实现类,用于存储和操作数据集合。集合框架提供了高效的数据结构和算法,方便开发者进行数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值