计算机语言指用于人和计算机之间通讯的语言,它是人与计算机之间传递信息的媒介。
翻译器可以将我们编写的源代码转换成机器语言,这也被称为二进制化。
编程语言有较强的逻辑性和行为能力,具有主动性;标记语言不用于向计算机发出指令,常用于格式化和连接。标记语言的存在是用来被读取,他是被动的。计算机只认识机器语言。
计算机基础:硬件:输入设备(鼠标、键盘等)、输出设备(显示屏、打印机)、CPU(负责处理数据与运算)、硬盘、内存(负责存储数据,硬盘永久存储数据,内存暂时存储数据);
软件:系统软件(windows、linux、macOS)、应用软件(浏览器、QQ、VSCode、)。
数据的存储:
- 计算机内部使用二进制0和1来表示数据
- 所有数据,包括文件、图片等最终都是以二进制数据形式存放在硬盘里面。
- 所有程序,包括操作系统,本质都是各种数据,也以二进制的形式存放在硬盘中。平时我们所说的安装软件就是把程序文件复制到硬盘中。
- 硬盘、内存都是保存的二进制数据。
程序的运行:
- 打开某个程序时,先从硬盘中把程序的代码加载到内存中
- CPU执行内存中的程序
注意:CPU执行速度很快,如果直接从硬盘中读取数据,会浪费cpu的性能(内存是电,硬盘是机械)。
JavaScript是一种运行在客户端的脚本语言(Script是脚本的语言)。
脚本语言:不需要编译,运行过程中有js解释器(js引擎)来逐行解释并执行
现在也可以基于Node.js技术进行服务器端编程。
作用:表单动态校验(密码强度检测也是最初设计的目的)、网页特效、服务端开发、桌面程序、App、控制硬件-物联网、游戏开发。
HTML/CSS/JS关系:骨架、衣服、行为。
浏览器执行JS:
- 渲染引擎:用来解析HTML与CSS,俗称内核,比如chrome浏览器内核的blink,老版本的webkit
- JS引擎:也称JS解释器。用来读取网页的JavaScript,对其处理后的运行,比如chrome浏览器的v8.
注意:浏览器本身并不会执行js代码,而是通过内置JavaScript引擎来执行JS代码。JS引擎执行代码时逐行解释每一句代码(转换成机器语言),然后有计算机去执行,所以JavaScript语言归为脚本语言,会逐行解释执行(翻译一句执行一句)。
JS组成:JavaScript语法(ECMAScript)、DOM(页面文档对象模型)、BOM(浏览器对象模型)。
ECMAScript规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
DOM:文档对象是W3C组织推荐的处理可扩展标记语言的标准编程接口;通过DOM提供的接口可以对页面上的各种元素进行操作(大小位置、颜色)。
BOM:浏览器对象模型,它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出窗、控制浏览器跳转、获取分辨率等等。
JS有三种书写格式:行内、内嵌和外部。
行内式JS:以将单行或少量代码写在HTML标签的时间属性中(以on开头的属性),如:onclick。注意单引号的使用:在HTML中我们推荐使用双引号,JS中我们推荐使用单引号
可读性差,在html中编写大量代码时不方便1阅读。
引号易错,引用多层嵌套匹配时,非常容易弄混
特殊情况下使用。
内嵌式JS
<script>
alert('沙漠骆驼');
</script>
可以将多行JS代码写到<script>标签中
内嵌JS是学习时常用的方法。
外部JS文件:
<script src="./my.js">
</script>
利用HTML页面代码结构化,把大段JS代码独立到HTML页面之外,,美观且方便文件级别的复用。
引用外部JS文件的script标签中不可以写代码
适合于JS代码量比较大的情况
多行注释:ctrl+alt+/
js的输入输出语句:
//输入框
prompt('请输入你的你年龄');
// 警示框
alert('计算的结果是');
// 日志打印内容
console.log('可见');
变量:用于存放数据的容器(空间)
var+变量名:申明一个变量;
var name = prompt('请输入你的名字');
alert(name);
获取输入框的值并显示
变量不声明直接用可以但是不提倡;
驼峰命名:首字母小写后面每个单词首字母大写;name在某些浏览器有特殊意义,不要用作变量名!!!!
数据类型
var num= 10 ;js的数据类型是根据等号右边的内容来确定的;js的变量数据类型是可以变化的,js是一种弱语言,主要是看等号右边的值。
简单数据类型(Number、String、Boolean、Undefined、Null)
复杂数据类型(object)
数字的进制问题:8进制数字前面加0;16进制前面加0x
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
数字型的最大值和最小值
console.log(Number.MAX_VALUE * 2);
console.log(-Number.MAX_VALUE * 2);
无穷大和无穷小
NaN表示非数字
isNaN()方法用来判断是否是为非数字对象是返回false不是返回true。
字符串数字类型:(外单内双或外双内单)
字符串转义符:(要写到引号里面)
字符串的长度:.length;
字符串的拼接:+;只要有字符串和其他类型的数据拼接最终展示的还是字符串类型;数值相加字符相连。
Boolean类型参与运算时,true被当作1,false当作0;
一个变量声明未赋值就是undefined类型,和字符串相加时是undefined字符串;和数字相加是NaN(not a number);null+字符串是null字符串,与数字相加就是数字。
获取变量的数据类型: console.log(typeof total); console.log(typeof null)是object
prompt得到的数据类型是字符串。可以根据控制台打印出来字体颜色判断是哪一种数据类型。
数据类型的转换:
转字符串:toString()、String()、+””(最重要的就是+拼接字符串也叫做隐式转换!)
转换成数字型:parseInt(string)、parseFloat(string)Number()强制类型转换、js隐式转换利用算术运算隐式转换为数值型(也十分常用)。如果带单位会自动将单位给去了。
转化成Boolean类型:Boolean()函数代表空、否定的值会被转换成false如:“”、0、NaN、null、undefined。其余的值都是true。
解释性语言和编译性的区别:
编译器翻译成机器语言的方式有:一个式编译、一个是解释;两种方式之间的区别在于翻译的时间点不同
编译器是在代码执行之前进行编译,生成中间代码文件
解释器是在代码运行的过程中进行及时的解释,并立即执行
总的来说就是解释性语言是逐行进行的,一边翻译一边执行,编译性语言是先全部翻译完之后再来执行。
标识符:指开发人员为变量、属性、函数、参数取的名字
标识符不能是关键字或者是保留字
关键字:是指JS本身已经使用了的字,不能再把他们充当变量名或者是方法名
包括:break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、instanceof、new、switch、this、throw、try、typeof、var、void、while、with等。
保留字:实际上就是预留的关键字,意思现在虽然还不是关键字,但是未来可能成为关键字,同样不能使用他们最为变量名或者方法名(boolean、byte、char、const、debugger、double、enum、export、extends、final、float、goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throw、transient、volatile等。
JavaScript运算符
用浮点数继续运算的时候会有精度问题,避开两个浮点数进行比较。
由数字、运算符、变量等组成的式子我们称为表达式。
前置自增和后置自增单独使用效果是一样的
后置自增:先返回原值后自加1;
比较运算符:===(全等一摸一样!!!!!数据类型也要一样)!==(不全等);==会默认将字符串的数据类型转换位数字型!!!
逻辑运算符(布尔运算符):&&、||、!。
冒泡排序和选择排序
package mWu;
import java.util.Arrays;
public class paixu {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { 23, 5, 3, 6, 78, 9 };
int[] arr1 = { 23, 5, 3, 6, 9 };
sort(arr);
choose(arr1);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr1));
}
public static void sort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int temp;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
public static void choose(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
int temp;
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
}