本文共 8602 字,大约阅读时间需要 28 分钟。
使计算机按照事先预定好的顺序完成特定的功能的虚拟构件
系统软件
DOS/win/MacOS/iOS/Unix/Linux 应用软件 Android(基于Linux系统环境运行)/办公软件/设计软件/开发软件等等计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称,按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。
构成成分:CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器
命令 | 释义 |
---|---|
d: | D盘盘符切换 |
dir | 列出盘符下所有文件;/p 分页显示下一页内容,按任意键查看下一屏;/s 显示所有目录及其子目录下所有文件 ;/w 宽屏显示;/o 分类顺序显示 |
cd java | 切换文件夹,进入java文件夹 |
cd … | 返回上一级目录 |
cd . | 当前目录 |
cd …/… | 返回上两级目录 |
cd / | 返回根目录 |
tab | 自动补齐 |
md | 新建文件夹;可以新建以【.】开头的文件夹 |
rd | 删除空文件夹 |
del + 文件名.扩展名 | 删除文件,不可逆 |
* | 通配符,根据*.exe查找所有exe文件或者java.*查找所有java名称文件 |
cls | 清屏 |
copy a.txt d:\myFile | 复制a.txt文件到d:\myFile文件夹中 |
copy myFile myPhoto | 只复制myFile文件夹下的所有文件到myPhoto中,不包括子文件夹中的文件以及文件夹 |
xcopy myFile myPhoto /s | 复制myFile文件夹下的所有文件及文件夹到myPhoto中,包括子文件夹中的文件,但不复制空目录 |
xcopy myFile myPhoto /e | 复制myFile文件夹下的所有文件及文件夹到myPhoto中,包括子文件夹中的文件,包括空目录 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
八进制 0 或 %o 表示:0-7,所以相当于每3位二进制=1位八进制,000~111。
十六进制 0x 或 %x 表示:0-F,所以相当于每4位二进制=1位十六进制,0000~1111。
十进制转二进制
二进制转十进制
十进制转八进制/十六进制
十进制除8或16,除尽至商0取余数,倒叙八进制转十进制
低位到高位依次为1/8/64/83…,相当于个十百千,分别曾以各位数字,然后相加十六进制转十进制
低位到高位依次为1/16/162/163…,相当于个十百千,分别曾以各位数字,然后相加八进制转二进制
各位数字分别处以2,除尽至商0取余数倒叙,必须是三位,如果不足三位,超三位舍弃高位,补零,如:226,分别处以2取余数倒叙为010/010/110十六进制转二进制
各位数字分别处以2,除尽至商0取余数倒叙,必须是四位,如果不足四位补零,超四位舍弃高位二进制转八进制/十六进制
分别拆为每三个一组/每四个一组,然后分别进行类似"二进制转十进制"的运算方法原码/反码-补码
速度快,直接交给CPU执行:C/C++/PHP/Object-C
跨平台,效率略低,需要解释给CPU:Java/C#
创始人:詹姆斯·高斯林(James Gosling),1990年,在Sun公司与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java
体系结构中立:虚拟机生成代码,可在任何机器上执行
可移植性:各种Java库和可移植接口,支持平台独立性
需要配置的原因:windows系统在查找程序的时候首先会在当前文件夹下查找,找不到的话就会去path路径下找
bin: binary二进制,主要存放java的开发工具
javac.exe/java.exe/javadoc.exe(编写说明文档)/javap.exe(反编译)
javap: 把class字节码文件反编译为虚拟机指令,CA FE BA BE开头字节码文件为java固有的模数
dos命令下: (1) javap -c XXX.class (2) javap -v XXX.class (3) 在dos中使用Java反编译工具 javap 反编译 .class 文件 : javap -c -l -private XXX.class -c: 反编译的一个选项 -l: 显示行号 -private: 显示所有的类和成员 XXX.class: 编译之后生产的字节码文件
javadoc:开发工具中的Generate javadoc选项进行生成,注意要将【-encoding utf-8 -charset utf-8】写入对应位置然后生成
db: Database数据库 ,是JDK自带的小型数据库Derby
include,存放java运行需要调用的系统资源的接口文件
jre
lib
src.zip,Java完整源代码
方法名和变量:一个单词时,首字母小写,多个单词时,从第二个单词开始,所有的单词的首字母都要大写getName
自定义常量:所有字母大写,多个单词连接时,使用下划线( _ )连接MAX_VALUE 变量的名字应当使用“名词”或者“形容词+名词” 函数的名字应当使用“动词”或者动宾
文档注释格式:
/***函数功能介绍*@param 参数1 说明*@param 参数2 说明*@renturn 返回值类型 说明*///相关标签介绍—— @param ; 参数 —— @return ; 返回值 —— @exception ; 异常类名 —— @author ; 作者 —— @version ; 版本号—— @see ; 引用—— @since ; 描述文本—— @serial ; 序列化警告—— @deprecated ; 过期文本
源文件中的逻辑片断之间
类声明和接口声明之间 函数之间 方法内的局部变量和方法的第一条语句之间 一个方法内的两个逻辑段之间间隔一个空行 一个大语句内与第一个小语句之间不需要空行,而多个小语句之间需要空行
所有关键字之后要加一个空格
语句内的逗号和分号之后要加一个空格 所有的二元运算符前后应当加空格 一元操作符如“!”、“~”、“++”、“–”等前后不加空格 在括号的内侧总是不添加空格 函数名之后不要加空格,紧跟左括号, 但是小括号后与大括号之间必须空格 作为结束符的“;”和 ","前面一律不加空格 “[]”、“.”等操作符前后不加空格
每行不允许超过80个字符,超过80个字符必须折行
if语句的折行通常缩进2个tab,保证对齐 三元表达式折行:【?】和【:】各站一行,作为开头 一行一个声明
常量与变量间的比较,建议把常量放在变量前 【if (null == arr)】
默认i/j/k/m/n为循环变量 在代码中注意数据类型一致化问题 操作字符转换,能用字符表示,就不要用其他数据 在声明局部变量的同时必须初始化,一般变量为0/-1,数组为null 在含有多种运算符的表达式中使用圆括号【(x >= 0) ? x : -x;】 三元运算符必须单独使用,不要再和其它运算混在一起 禁止使用内嵌(embedded)赋值运算符,必须拆分
if语句的逻辑判断部分,要充分利用逻辑短路原则:重要性先后判断,提高效率
switch-case 语句
(1)运行的代码只能是case 到 break之间,或者case 到 大括号之间!!! 在case之外的点是不能被执行的,编译时会有语法错误,如果在eclipse /IDE工具下,提示的是 unreachable code
(2)break可以省略,但是代码是继续执行到遇到break或者大括号结束,穿透特性,无特殊情况必须有break; (3)不能出现相同的case选项 (4)必须有default (5)switch的值只能是byte/short/int/char/enum(枚举)和String
循环语句
(1)在dos中,出现死循环, ctrl+c 终止
(2)先把循环结构写好,然后填充内容 (3)do{ }while( ); 语句,注意有分号, 第一次循环执行是不经过任何判断的,不可控,直接执行 (4)[已知] / [可控] / [效率]
continue break return
(1)continue关键字:1. 结束本次循环,继续下一项循环,在while或者do - while中,如果使用continue关键字,要时刻注意continue关键字的位置,是否会影响到循环条件变更,如果条件不变,导致死循环 2. 在业务逻辑中,如果必须使用continue,则最好与for循环使用
(2)break关键字:跳出switch case结构或者循环结构 (3)return关键字:将当前方法运行的结果进行返回,结束方法
- 需求分析: (1)函数功能/使用目的是什么? (2)函数的命名,见名知意 (3)函数需要哪些参数?什么类型?参数列表 (4)函数的返回值类型是什么?含义是什么?
- 思考逻辑实现流程 用【实现注释】直接把函数的运行流程,步骤写好,尽量细化, 必须有参数合法化且重要性先后的判断
- 按照流程写代码 按照注释,完成代码,在完成当前步骤之前,不要考虑下一步
- 测试 健壮性,安全性,稳定性,高效
- 递归程序必须事先判断好停止点,不然就会造成无限调用的情况
- 递归程序执行的动作虽然一样,但是每次执行的参数都不同,不然就会无意义
字符常量
定义: 单引号包含的单个元素 转义字符:1.转义字符是一个整体,可以看做一个字符常量
2.转义字符有且只能转义\之后的第一个字符 类别: "打印双引号 \r回车 \n换行 \t制表符,即tab \展示一个反斜杠 \\展示两个反斜杠 ‘\40’表示八进制40,对应十进制为32,即sp空格 ‘\x40’表示十六进制40 需要初始化一个字符变量,可以使用’\0’ 自定义常量 自定义常量(不可变的“变量”)
数值型
类型 | 字节 | 范围 |
---|---|---|
整数型byte | 1字节(8bit) | -27~27-1(-128~127) |
整数型short | 2字节 | -215~215-1 -32768到 32767 |
整数型int | 4字节 | -231~231-1 |
整数型long | 8字节 | -263~263-1 |
浮点型float | 4字节 | |
浮点型double | 8字节 |
循环取值:各类型数据,在超过取值范围的时候,不会报错,而是在取值范围内循环
byte z = -128;byte w = --z;//结果为127
字符型char
布尔型boolean
理论上是占八分之一个字节由于不同数据类型之间无法进行运算,所以需要将一种数据类型转换为另外一种数据类型
隐式转换
double n = (1.4 - 0.5)/0.9;//由于1.4转二进制只能近似,所以结果为0.999999999
强制转换
注意不要超过目标变量类型的极限类、接口、数组、枚举(一种类)、注解(一种接口)、字符串
包装类不要使用==,这个只在-128~127生效
包装类与基本类型一样,不能修改参数数值,可以使用Holder@Testpublic void testHashCode() { IntHolder x = new IntHolder(2); Integer y = triple(x); System.out.println("x = " + x.value + ", y = " + y);}private Integer triple(IntHolder x) { x.value = 3 * x.value; return x.value;}//printx = 6, y = 6
在运算的过程中,只有被赋值的变量才会修改变量值,其他的都是在提供运算数据,final修饰的变量也会变为只提供运算数据的常量。
自增自减运算:
按照算术运算符优先级,首先会计算number++,在内存中,会将number的值存储在一个区间内,然后执行number = number +1,最后将【区间内存储的值】进行赋值运算,赋给k
在使用自增自减运算符,单独成行,避免没有必要的歧义
a^b^a , a^a^b , 结果均为b, 即一个数异或同一个数两次, 结果为本身
可以用于数值交换:a=a^b; b=a^b;a=a^b
括号 > 正号、负号、++、-- > 乘号、除号、取余号 > 加号、减号 > 位运算 > 大于号、等号、小于号、不等号 > 各种赋值符号 > return
逻辑非 > 等号、不等号 > 逻辑与、或、异或 > 各种赋值符号
1、一定要保证数据私有
2、一定要对数据初始化 3、不要在类中使用过多基本类型 4、不是所有的域都需要独立的访问器get和更改器set 5、将职责过多的类进行分解 6、类名和方法名都要能够体现其职责 7、优先使用不可变的类1、将公告操作和域放在超类
2、 不要使用被包含的域
protected 的缺点:
可以任意派生子类并访问 protected 的实例域, 破坏封装性; 同一个包内所有类都可以访问 protected 域, 即使其不是这个类的子类. protected 的场景应该是定义只能在子类中使用的方法时才用.
3、使用继承实现 is-a 关系
4、除非所有继承的方法都有意思, 否则不要使用继承 5、 在覆盖方法时, 不要改变预期的行为 6.、使用多态, 而非类型信息 7、不要过多使用反射转载地址:http://ksgzi.baihongyu.com/