其实计算机还是挺抽象,为什么一块由电线,电路板组成东西可以存储声音,影像??很困惑,可是我想去理解。越去理解越了解,基础比进阶更难,特此
记下。
1:计算机基础知识概述
-
计算机
-
计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。
-
-
计算机硬件
-
cpu
-
硬盘
-
内存
-
...
-
-
软件开发
-
什么是软件?
-
软件是一系列按照特定顺序组织的计算机数据和指令的集合。程序设计的最终结果是软件。
-
系统软件: 系统软件为计算机使用提供最基本的功能. 例如:DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS
-
应用软件: 系统软件并不针对某一特定应用领域。而应用软件则相反,不同的应用软件根据用户和所服务的领域提供不同的功能。 例如:Word, Excel, PPT, QQ, FeiQ, 极域,Editplus Eclipse
-
-
什么是开发?
-
制作软件(我们就是干这个活)
-
-
-
人机交互
-
图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。
-
命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
-
-
键盘认识
-
1,Tab(table)缩进
-
2,shift转换键
-
3,Ctrl(control)控制
-
4,Windows
-
5,Alt(Alternative)交换,替换
-
6,空格
-
7,Enter回车键
-
8,上下左右键
-
9,PrtSc(PrintScreen)屏幕截图
-
-
快捷键和功能键
-
Windows快捷键
-
Windows徽标键+L键切换用户
-
Windows徽标键+TAB键在任务栏上的按钮间循环
-
Windows徽标键+E键启动“我的电脑”
-
Windows徽标键+D键快速显示桌面
-
Windows徽标键+R键执行“运行”命令
-
Windows徽标键+U键打开“工具管理器”
-
Windpws徽标键+M键将所有窗口最小化
-
Windows徽标键+F键搜索文件或者文件夹
-
Windows徽标键+F1键显示Windows帮助
-
Windows徽标键+Shift+M键将最小化的窗口还原
-
Windows徽标键+Ctrl+F键搜索计算机
-
Windows徽标键+PauseBreak键打开“系统属性”对话框
-
-
Ctrl快捷键
-
Ctrl+A全选
-
Ctrl+C复制
-
Ctrl+V粘贴
-
Ctrl+X剪切
-
Ctrl+Z撤销
2:常见DOS命令
-
-
-
dir(directory) : 列出当前目录下的文件以及文件夹
-
md(make directory) : 创建目录
-
rd(remove directory): 删除目录
-
cd :(change directory)改变指定目录(进入指定目录)
-
cd..: 退回到上一级目录
-
cd\:退回到根目录
-
del(delete): 删除文件,删除一堆后缀名一样的文件*.txt
-
exit: 退出dos命令行
-
cls: (CLear Screen)清屏
3:计算机语言
-
语言:是人与人之间用于沟通的一种方式。
-
例如:中国人与中国人用中文沟通。而中国人要和美国人交流,就要学习英语。而且语言不通有时候也会闹出一些笑话。
-
-
计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语。
-
计算机语言有很多种,如:C,C++,Java等。这里,我们选择其中的一种:Java语言。我们可以看一下老师在网上找的计算机语言排行榜
-
-
计算机语言分类
-
机器语言: 机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。
-
汇编语言: 汇编语言是使用一些特殊的符号来代替机器语言的二进制码,计算机不能直接识别,需要用一种软件将汇编语言翻译成机器语言。
-
高级语言:
使用普通英语进行编写源代码,通过编译器将源代码翻译成计算机直接识别的机器语言,之后再由计算机执行。4:Java语言概述和技术体系架构
-
-
Java是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
-
Java的起源:一个Green项目
-
1995年,Oak正式更名为java
-
1996年,Sun公司发布JDK1.0
-
1998年,发布了1.2,也叫java2
-
1999年,Sun公司把java技术分成了J2SE,J2ME,J2EE
-
2000年,JDK1.3,1.4发布
-
2005年,Java的各个版本取消2
-
-
Java语言的三种技术架构
-
J2SEJava2 Platform Standard Edition)标准版
-
是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。
-
-
J2EE(Java2 Platform Enterprise Edition)企业版
-
是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如 Servlet Jsp等,主要针对于Web应用程序开发。
-
-
J2ME(Java2 Platform Micro Edition)小型版
-
是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。
-
-
Java5.0版本后,更名为 JAVAEE JAVASE JAVAME
5:Java语言特性(跨平台)
-
-
高级语言的工作原理
-
windows下的c语言编程过程
-
c源程序(扩展名.c)-------->windows可执行性文件-------->windows操作系统
-
-
java语言编程过程
-
Java源程序(扩展名.java)-------->Java字节码文件(扩展名.class)-------->jvm虚拟机(跨平台)
6:JDK,JRE及JVM之间的关系
-
-
-
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。
-
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
-
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似
-
有图有真相
7:JDK的下载,安装及卸载
-
JDK(JavaDevelopment Kit Java开发工具包)
-
下载jdk官方网址:
-
www.oracle.com
-
java.sun.com
-
-
安装jdk
-
傻瓜式安装,下一步即可。建议:安装路径不要有中文或者特殊符号如空格等。当提示安装JRE时,可以选择不安装。
8:开发第一个Java应用程序
class Demo{ public static void main(String[] args) {System.out.println("Hello World!"); }}
1:进制转换
-
-
其他进制到十进制
-
其他进制包含二进制,八进制,十六进制
-
转换规则
-
先把数据的每一位上的系数乘以对应基数的次幂(低位从从零开始),然后相加即可
-
-
-
十进制到其他进制
-
规则:除基取余,直到商为0,最后将余数反转
-
十进制到二进制
-
除2取余,直到商为0,最后将余数反转
-
十进制13对应的二进制数据是1101
-
二进制到十进制的技巧(8421码)
-
-
十进制到八进制
-
除8取余,直到商为0,最后将余数反转
-
十进制13对应的把进制数据是15
-
十进制--二进制--八进制
-
首先把十进制转成二进制
-
其次把二进制数据每三位组合。左边不够三位用0补位
-
然后把每个组合计算成对应的十进制数据
-
最后从左到右把数据相连接即可得到八进制
-
-
-
十进制到十六进制
-
除16取余,直到商为0,最后将余数反转
-
十进制13对应的把进制数据是D
-
十进制--二进制--十六进制
-
首先把十进制转成二进制
-
其次把二进制数据每四位组合。左边不够四位用0补位
-
然后把每个组合计算成对应的十进制数据
-
最后从左到右把数据相连接即可得到十六进制
-
-
-
-
-
快速转换法
2:计算机中有符号数据表示法
-
原码
-
反码
-
补码
3:变量
-
在程序的运行过程中,其值在指定范围内变化的值
-
是内存中一个区域,用于存储数据
-
变量的定义格式:
-
A:数据类型 变量名 = 初始化值;
-
-
变量在使用的时候
-
A:第一种,在声明的时候,就初始化值
-
数据类型 变量名 = 初始化值;
-
举例:byteb = 100; System.out.println(b);
-
-
B:第二种 在使用前,赋值
-
声明
-
赋值
-
使用
-
举例byte b2;b2 = 100; System.out.println(b2);
4:数据类型
-
-
-
java语言分为两种数据类型
-
A:基本数据类型
-
B:引用数据类型(类,接口,数组)
-
-
基本数据类型
-
A:区别 在内存中分配的空间大小不同,从而导致它表示的数据范围不同
-
B:4类8种
-
整数
-
byte占1个字节//8个开关,8个二进制位1byte = 8bit
-
short占2个字节
-
int 占4个字节0
-
long占8个字节 其后加L或l标识
-
-
浮点数
-
float占4个字节 其后加F或f标识3.3f 2^63
-
32个二进制位
-
1位符号位
-
8位代表指数位
-
23位尾数位0.9999999
-
0000000000- 111111111 0 - 255
-
IEEE754 0 255 特殊的值
-
1 -254 - 127
-
1 -127 = -126
-
254- 127 = 127
-
-
double占8个字节
-
字符
-
char占2个字节 0 -65535
-
-
布尔型
-
booleanThis data type represents one bit of information,
-
butits "size" isn't something that's precisely defined.
-
这个数据类型代表一个比特的信息,但它的“大小”不是精确定义的东西.
-
true,false
-
-
-
-
C:默认情况下:
-
整数是int类型
-
浮点数是double类型
5:数据类型转换
-
-
数据参与运算
-
A:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则
-
容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;数据类型按容量大小排序为:
-
byte,short,char->int->long->float->double
-
byte和 short运算时不能和char之间互相转换,byte可以直接赋值给short,但是他们三者在计算时首先会转换为int类型
-
-
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
-
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
-
-
B:强制转换符
-
格式:(数据类型)(要被转换的数据)byte b = (byte)(300);
-
-
C:字符型参与运算
-
首先会去找对应字符的unicode码值。然后运算。
-
char类型取值范围0~2(16)-1,我就有了一个问题?能不能把整数直接赋值给char类型的变量
-
-
D:布尔型参与运算
-
不能参与运算
-
-
E:字符串参与运算
-
它是和参与运算的数据相连接组成了一个新的字符串。
-
-
思考:哪句是编译失败的呢?为什么呢?
byteb1=3,b2=4,b;
b=b1+b2; -
(1)byte,short,char三种数据类型在内存中运算的时候会自动类型提升为int去运算
-
(2)b1和b2是两个变量值,jvm无法判断里面值的大小
b=3+4;
-
java编译器有常量优化机制,在编译的时候已经将3+4的结果赋值给b了
6:算术运算符+,-,*,/,%,++,--
-
-
A:%
-
当左边的绝对值小于右边:结果是左边
-
当左边的绝对值等于右边或者是右边倍数的时候:结果是0
-
当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号
-
取余的正负号取决于左边,右边忽略不记
-
用途:任意正整数%2 结果是要么0,要么1。用于切换条件
-
-
B:++,--
-
递增,递减运算符。就是加1或者减1
-
单独存在,放在操作数的前面或者后面,结果一样
-
参与运算时:
-
放在变量的前面,先自身加或者减1,然后再参与运算
-
放在变量的后面,先参与运算,然后再自身加或者减1
-
-
-
C:+
-
作为数据的符号(正号)
-
做加法运算
-
字符串连接符"5+ 5 =" + (5 + 5);
7:赋值运算符=,+=,*=
-
-
赋值运算符
-
A:=:赋值运算符 把右边的值赋给左边
举例:int x = 3; 把3赋给int类型变量xint a,b,c; a = b = c = 5;
-
-
B:+=:加赋值运算符 把左边和右边的和赋给左边
-
举例:intx = 3; x+=2;等同于 x = x + 2;
-
面试题
-
-
byteb = 5;b = b + 2;b += 2; b = (byte)(b + 2);System.out.println(b);会不会报错?+=运算符在给b赋值时,自动完成了强转操作。
8:比较运算符==,!=,>,<,>=,<=
-
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
9:逻辑运算符
-
逻辑与运算符&
第一个条件 第二个条件 结果true true truefalse true falsetrue false falsefalse falsefalse简单记:左右两边同时为true,结果为true。
-
逻辑或运算符 |
第一个条件 第二个条件 结果true true truefalse true truetrue false truefalse false false简单记:左右两边只要有一个结果是true,结果为true。
-
逻辑异或运算符 ^
第一个条件 第二个条件 结果true true falsefalse true truetrue false truefalse falsefalse简单记:左右两边相同,结果为false。
-
逻辑非运算符 !
!true false!false true !!true true
-
短路与:
&:左边无论什么结果,右边都执行。&&:左边为false,右边不执行,结果为false。intx = 10;x > 11 && x < 15
-
短路或:
|:左边无论什么结果,右边都执行。||:左边为true,右边不执行,结果为true。
1:位运算符
-
位运算符2<<32 * 8 == 2 * 2^3
-
<<一个整数向左移动几位就乘以2的几次幂
-
>>一个整数向右移动几位就除以2的几次幂,高位是0就补0,高位是1就补1
-
>>>无符号右移无论最高位的符号位是0还是1,用无符号右移后高位符号位都是补0
2:三元运算符
-
-
格式 :(条件表达式)?表达式1:表达式2;
-
如果条件为true,运算后的结果是表达式1;
-
如果条件为false,运算后的结果是表达式2;
-
条件运算符运算完之后一定有一个结果
int x,y,z;x = 5;y = 10;z = x > y ? x : y;
-
-
表达式
-
运算符的优先级。
3:程序运行流程&顺序结构
-
顺序结构
-
判断结构
-
选择结构
-
循环结构
4:if语句
-
三种格式:
-
第一种:
if(条件表达式){ 执行语句;}System.out.println();举例:int age = 17;if (age >= 18) System.out.println("可以浏览本网站");System.out.println("完了");
-
第二种:
if(条件表达式){ 执行语句; }else{ 执行语句; }举例:int x = 1;if (x == 1){ System.out.println("男厕所欢迎您");}else { System.out.println("女厕所欢迎您");}if else 与三元运算符的区别
-
第三种:
if(条件表达式){ 执行语句;}elseif (条件表达式){ 执行语句;}else{执行语句;}举例:intx = 1;if (x == 1){ System.out.println("男厕所欢迎您");}else if(x == 0){ System.out.println("女厕所欢迎您");}else { System.out.println("无法识别您的性别");}
5:if语句嵌套
int x = 2, y = 1; if(x==1){ if(y==1){System.out.println("a"); }else{ System.out.println("b"); }}else{ if(y==1){ System.out.println("c"); }else{System.out.println("d"); } }
6:switch
-
格式:
int x = 10;switch (表达式){//byte,short,int,char,String 枚举case 表达式里对应的值: 执行语句;break;case 表达式里对应的值: 执行语句;break;......default:执行语句;break;//最后一句的break可写可不写,因为程序已经执行到了末尾}
-
案例:
String name = "张三";String gender = "先生";switch (gender){case "先生": System.out.println(name + "是一位" + gender + "喜欢吃饭睡觉打dota");break;case "女士": System.out.println(name + "是一位" + gender + "逛街购物美容");break;default: System.out.println(name + "是一位" + gender + "打雌性激素保持美貌容颜");}
-
switch结束的两种情况
-
1,当程序执行过程中遇到了break
-
2,当程序执行到了末尾处
-
-
switch语句需要注意的两个细节
-
1,当switch表达式的值与其中一个case匹配的时候,这个case里没有写break;语句,那么程序会继续执行下个case里的执行语句,不会再对case值进行判断,应用于当几个case里的值所要执行的语句都一样的时候,我们可以不写break
例如:我们做一年有四季的例子:int month = 4; switch (month){ case 3: case 4: case 5:System.out.println(month+"月是春季");break; case 6: case 7: case 8: System.out.println(month+"月是夏季"); break; case 9: case 10: case 11:System.out.println(month+"月是秋季");break; case 12: case 1: case 2: System.out.println(month+"月是冬季"); break; default: System.out.println(month+"月没有这样的月份") }//上述例子就是三个case里面的值输出都一样的,所以我们省略了break;这样会少写几行代码,提高效率* 2,当我们把 default 不是写在最后,default里面还没有写break的是时候,switch里的表达式与各个case里的值都不匹配的时候,上面两个条件同时满足的话,程序在default里执行完了还会再去执行case里的语句
例如: int x = 3; switch (x){ case 4:System.out.print("a"); break; default:System.out.print("b");//当程序执行到了default但是他没有break,下面的case值不再判断,程序继续执行case 5: System.out.print("c"); case 6:System.out.print("d"); break;//遇到break,程序跳出case 7: System.out.print("e"); }
7:while
-
-
while循环
格式:while (条件表达式){ 循环体;}例如:intx = 3;while (x<6){ System.out.println("x="+x);//循环体 x++;//用x自增来控制循环次数}
-
dowhile 循环
格式:do{ 循环体; 控制循环次数}while (条件表达式);例如:int x = 3;do{ System.out.println("x="+x);//循环体 x++;//用x自增来控制循环次数}while (x<6);
-
while和do while的区别:
-
dowhile语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行,再判断
-
while先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行.
1:for循环语句
-
格式:
for(初始化表达式1;循环条件表达式2;循环后的操作表达式4){ 执行语句;(循环体)3}
-
例如:
for(int x=0; x< 3;x++ ){System.out.println("x="+x);}
2:循环嵌套及案例
-
格式:
-
for(初始化表达式;循环条件表达式;循环后的操作表达式){//这是外层循环 执行语句;(循环体) //下面是内循环 for(初始化表达式;循环条件表达式;循环后的操作表达式){ 执行语句;(循环体) }}
-
举例:
-
for(int x=1;x < 6;x++ ){ for(int y=1; y<6; y++){System.out.print("*"); } System.out.println();}
-
练习:打印99乘法表
3:流程控制continue和break
-
这两个语句离开应用范围,存在是没有意义的。
-
这两个语句单独存在下面都不可以有语句,因为执行不到。
-
continue语句是结束本次循环继续下次循环。
-
标号的出现,可以让这两个语句作用于指定的范围。
4:函数的概述及格式
-
函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。
-
函数的格式
-
修饰符 返回值类型函数名(参数类型 形式参数1,参数类型形式参数2,…) {执行语句; return 返回值;}publicstatic int add(int a,int b){}A:修饰符 后面会重点讲。public staticB:返回值类型这个特定的功能完成后,需要返回一个结果。这个地方就是返回结果的类型。C:函数名 为了方便使用这个函数,给它起个名字。这个名字要符合标识符命名规则。D:参数类型 形式参数的数据类型 **:形式参数 自定义的接收方 **:实际参数 发出方add(3,5)E:执行语句 那么这个语句是由多条语句组成。F:return这个功能执行完以后,需要有一个返回值,那么这个值有关键字return带回。
5:函数的使用及注意事项
-
A:一般函数只有被调用后,才执行。
-
B:void 表示没有返回。在这个函数的结尾可以不写return。其实jvm会自动的结尾处加上return;
-
C:函数中不能定义函数
-
D:如果定义自己的函数 两个明确
-
明确该功能的结果 其实就是该功能的返回类型。
-
明确该功能的参数 其实就是明确该功能中是否需要未知内容(形式参数)参与运算。明确未知内容的类型和个数。
6:函数的重载
-
-
A:函数名相同,参数列表不同。
-
参数类型不同。intadd(int i)void add(double d)
-
参数个数不同。add(inta,int b);add(int a,int b,int c)
-
参数顺序不同print(String name, int age)//参数顺序不同的重载是可以存在的,但是没有什么实际意义
-
-
B:特点:与返回值类型无关,只看参数列表。
-
C:好处:便于阅读,优化程序设计。
7:函数的练习
-
1,for的嵌套循环打印矩形用函数封装起来,根据所传参数打印行和列
-
2,判断两个(int型)整数是否相同
-
3,比较两个(int型)整数哪个大?
-
4,定义一个功能获取三个(int型)整数中的最大数
-
5,定义一个方法求一个数的十六进制表现形式
8:Scanner类的概述和使用
-
使用前要导包 *import java.util.Scanner;
-
使用时要创建对象
-
Scannersc = new Scanner(System.in);int x = sc.nextInt();
-
-