7-10笔记整理
计算机基础
关于软件开发和计算机语言概述
**软件:**按照特定顺序组织的计算机数据和指令的合集
**开发:**软件的制作过程
**软件开发:**借助开工具与计算机语言制作软件
**语言:**人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换
**计算机语言:**人与计算机之间进行信息交流沟通的一种特殊语言(计算机语言中也包含字符、符号等)
**常见的计算机语言:**C\C++、C#、java
人机交互
软件的出现实现了人与计算机之间更好的交互
**人机交互的两种方式:**图形化界面方式(简单直观,易接受,好上手操作)
命令行方式(在控制台输入指定的指令,让计算机完成操作,需要记住一些命令)
键盘功能和快捷键
Ctrl+A 全选 Ctrl+C 复制 Ctrl+V 粘贴
Ctrl+X 剪切 Ctrl+Z 撤销 Ctrl+S 保存
Alt+F4 关闭窗口
window+R 运行 window+E 打开我的电脑 window+TAB 在打开的项目之间切换
Ctrl+Alt+Del 注销任务管理器
Shift+Delete 永久删除
拖动某项目时按Ctrl复制所选项目
打开DOS控制台
window+R—cmd—回车
Shift+右键—在此处打开命令窗口
开始—程序—附件—命令提示符
常见DOS命令
D: 盘符切换
dir 罗列当前目录下的文件和文件夹
cd 进入指定目录,跨盘要加 /d 参数
cd… 退回上一级目录,cd…/…/ 回退多级目录,cd\ 退回根目录
cls 清屏
md 创建目录
rd 删除目录(无内容)
rd /s 名称 删除有内容文件夹(询问)(不可恢复)
rd /q /s 名称 删除有内容文件夹(直接删除)(不可恢复)
del 删除文件,del *.txt 删除后缀名相同的文件(不可恢复)
exit 退出DOS命令行
calc 打开计算器
mspaint 打开画板
notepad 打开记事本
getmac 获取物理网卡地址
hostname 获取计算机名称
ipconfig /all 查看本机IP 网卡物理地址等信息
JAVA语言跨平台原理
JAVA语言特点:
简单性—解释性
面向对象—高能性
分布式处理—多线程
健壮性—多态
结构中立—安全性
开源、跨平台(JVM)
什么是跨平台性(操作系统)
通过java语言编写的应用程序在不同的系统平台上都可以运行
Java语言跨平台原理
在需要运行java应用程序的操作系统上,安装对应的Java虚拟机(JVM),由JVM负责java程序在该系统中运行
Java语言跨平台图解
- 因为有了JVM,同一个java程序在三个不同操作系统中都可以执行,因此实现了java的跨平台性(可移植性)
- java语言是跨平台的,JVM不跨平台
- JVM不跨平台,针对不同的操作系统,java提供了不同的JVM,各个操作系统的可执行文件不同
JRE和JDK的概述
什么是JRE
java的运行环境,包括java虚拟机(JVM)和Java程序所需的核心类库等,运行一个开发好的java程序只需安装JRE即可
什么是JDK
java开发工具包,提供给java开发人员使用,包含了java的开发工具,也包括JRE。因此安装JDK后不需单独安装JRE
为什么JDK中包含一个JRE
-
其一,开发完的程序,需要运行一下看看效果
-
其二,最重要的是,JDK中的开发工具其实都是java语言编写的应用程序,为了方便使用才打包成exe文件,如果没有JRE,这些工具无法运行
JDK、JRE、JVM的作用和关系
我们用JDK编写了一个java程序交由JRE运行起来,由JVM实现跨平台使用
HelloWord案例的编写和运行
创建一个HelloWord.java的文件(HelloWord程序的源文件)
class HelloWord{//class 类名
public static void main(String[] args) {//添加主(main)方法/函数
System.out.println("Hello World!");//在主方法的大括号添加输出语句
}
}
编译:在HelloWord.java所在的目录中使用javac命令编译HelloWord源文件,生成字节码文件(后缀名为.class)
格式:javac HelloWord.java(此时要有后缀名)
运行:在HelloWord.class所在的目录中使用java命令运行class字节码文件
格式:java HelloWord(此时不要后缀名)
HelloWord案例常见问题小结
找不到文件
-
文件扩展名隐藏导致编译失败 例:HelloWord.java(.txt)拓展名不正确
-
文件名写错 例:javac HelooWord.java 文件名称出错
-
路径不正确 例:源文件在C盘,而编译是在D盘目录中进行
单词拼写问题(注意大小写)
Class HelloWord{//class小写
public static void mian(string[] args) {//main拼写问题、String首位大写
system.out.println("Hello World!");//System首位大写
}
}
括号匹配问题
class HelloWord//缺少类体的大括号
public static void main(String[] args) {
System.out.println("Hello World!";//缺少输出语句的小括号
//缺少方法体的大括号
}
中英文问题
class HelloWord{
public static void main(String[] args) {
System.out.println("Hello World!");//使用英文字符;
}
}
注释概述及其分类
**注释:**用于解释说明程序的文字
**注释的分类:**单行注释 格式://注释的文字
多行注释 格式:/* 注释的文字 */
文档注释 格式:/** 注释的文字 */
**注释怎么写:**先写思路,再写代码实现
**注释的作用:**解释说明程序,帮助我们调试程序
关键字的概述和使用
**关键字:**被java语言赋予特殊含义的单词
**关键字的特点:**组成关键字的字母都是小写
**常见关键字:**class,public,static,void…
关键字的注意事项
-
goto和const是java语言的保留字
-
类似editplus这样的高级文本编辑器对关键字是有颜色变化的
标识符的概述和组成规则
见名知意
**标识符:**是给类,接口,方法,变量,常量等起名时使用的字符序列
标识符的组成规则
-
英文的大小写字母
-
数字字符
-
$和_
标识符的注意事项
-
不能以数字开头
-
不能是java中的关键字
-
区分大小写
-
不能使用特殊字符
标识符中常见的命名规则
包(就是文件夹,为了解决同个目录下不能同时存在两个相同名称的文件)
- 字母都是小写 itcast
类或者接口
-
一个单词:首字母大写,其余字母小写 Student
-
多个单词:每个单词首字母都大写,其余字母小写 StudentName
方法或者变量
-
一个单词:字母全部小写 name
-
多个单词:从第二个单词开始,首字母大写,其余字母小写 getName
常量
-
一个单词:字母全是大写 NAME
-
多个单词:字母全是大写,每个单词之间使用_隔开 STUDENG_MAX_AGE
软件下载与安装
JDK的下载和安装过程
下载
-
官网:http://www.oracle.com
-
历史版本下载网址:https://www.oracle.com/technetwork/cn/java/archive-139210-zhs.html
JDK的安装
-
安装路径不要有中文或者特殊符号如空格等
-
所有和开发相关的软件最好安装目录统一
-
不要在根目录下安装
验证安装是否成功
- 通过DOS命令,切换到JDK安装的bin目录下,然后分别输入javac和java,如果正常显示一些内容,说明安装成功
JDK安装路径下的目录解释
bin目录:该目录用于存放一些可执行程序。
- 如javac.exe(java编译器)、java.exe(java运行工具),jar.exe(打包工具)和javadoc.exe(文档生成工具)等。
db目录:db目录是一个小型的数据库。
-
从JDK 6.0开始,Java中引用了一个新的成员JavaDB,这是一个纯Java实现、开源的数据库管理系统。
-
这个数据库不仅轻便,而且支持JDBC 4.0所有的规范, 在学习JDBC 时,不再需要额外地安装一个数据库软件,选择直接使用JavaDB即可。
jre目录:"jre"是 Java Runtime Environment 的缩写,意为Java程序运行时环境。
- 此目录是Java运行时环境的根目录,它包括Java虚拟机,运行时的类包,Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。
include目录:由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
lib目录:lib是library的缩写,意为 Java 类库或库文件,是开发工具使用的归档包文件。
src.zip文件:src.zip为src文件夹的压缩文件,src中放置的是JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。
Path环境变量的配置方式
步骤
- (1):先配置JAVA_HOME
在系统环境变量中: 新建JAVA_HOME
变量值=D:\develop\Java\jdk1.7.0_72
- (2):再修改path
在path前面添加: %JAVA_HOME%\bin;
7-11笔记整理
JAVA语言基础
常量的概述和使用
什么是常量
- 就是在程序而执行过程中其值不发生改变的量
JAVA中常量的分类
-
字面值常量
-
自定义常量
字面值常量的分类
- 字符串常量:用双引号括起来的内容 例:“HelloWord”
class Demo{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
输出:HelloWord!
- 整数变量:所有整数 例:25
class Demo{
public static void main(String[] args) {
System.out.println(25);
}
}
输出:25
- 小数常量:所有小数 例:2.4
class Demo{
public static void main(String[] args) {
System.out.println(2.4);
}
}
输出:2.4
- 字符常量:用单引号括起来的内容 例:‘a’、‘A’、‘0’(单引号中只能是单个字母、数字、符号)
class Demo{
public static void main(String[] args) {
System.out.println('A');
}
}
输出:A
- 布尔常量:较为特有,只有true和false
class Demo{
public static void main(String[] args) {
System.out.println(true);
}
}
输出:ture
- 空常量:null
进制概述和二、八、十六进制图解
JAVA针对整数常量提供 了4种表现形式
- 二进制、八进制、十进制、十六进制
什么是进制
-
就是进位制,使人们规定的一种进位方法。对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。
-
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一
二进制的由来
-
我们计算机中的电子元器件的状态位:开、关,而我们表示数据的时候也是使用这两种状态位来进行表示的。
-
因为使用两个状态位来表示一个数据的时候远远不足以显示数字、字符和字母,使用国际化组织就规定了使用8个这样的单子元器件位来表示一个数据,这个数据的单位就是字节,计算机中对数据的存储的最小单位就是字节。
1byte=8bit
1k=1024byte
1m=1024k
1g=1024m
1t=1024g
八进制的由来
- 我们发现用二进制来表示数据的数据表现形式很长,可以对二进制数据进行优化,对二进制数据从右往左进行分组,每3位为一组,不够的左边补0,然后把每一组数据转换成十进制数据,再将十进制数据连接起来,就形成了八进制数据
十六进制的由来
- 对二进制数据再次进行优化,依旧从右往左分组,每4位为一组,不够的左边补0,然后把每组数据包转换成十进制数据,再将十进制数据连接起来,就形成了十六进制数据
不同进制表现同一个数据的形式特点
- 进制越大,表现形式越短
不同进制数据的表现形式
二进制的数据表现形式
- 由0,1组成。 以0b开头(b可大写)
class Demo{
public static void main(String[] args) {
System.out.println(0b11011);
}
}
输出:27
八进制的数据表现形式
- 由0,1,2,3,4,5,6,7组成。 以0开头
class Demo{
public static void main(String[] args) {
System.out.println(011011);
}
}
输出:4617
十进制的数据表现形式
- 由0,1,2,3,4,5,6,7,8,9组成。 整数默认是十进制的
class Demo{
public static void main(String[] args) {
System.out.println(11011);
}
}
输出:11011
十六进制的数据表现形式
- 由0-9,a,b,c,d,e,f(大小写均可)。 以0x开头(x可大写)
class Demo{
public static void main(String[] args) {
System.out.println(0x11011);
}
}
输出:69649
任意进制到十进制的转换图解
任意进制到十进制的转换原理(位权展开法)
-
每一组的数据由3部分组成(系数、基数、权)
-
系数:系数就是该位对应的值
-
基数:X进制到10进制的转换,那么这个基数就是X
-
权:对数据的每一位给出一个编号,而这个编号是从0开始,并且是从右往左的,那么每一组的权值就是该编号的值
-
每一组的数据=系数*基数^权
-
然后我们把每一组的数据加起来就完成了X进制到十进制的数据转换
二进制到十进制
0b100=1 *2^2+0 *2^1+0 *2^0
=4+0+0
=4
八进制到十进制
0100=1 *8^2+0 *8^1+0 *8^0
=64+0+0
=64
十六进制到十进制
0x100=1 *16^2+0 *16^1+0 *16^0
=256+0+0
=256
十进制到任意进制的转换图解
十进制到任意进制的转换原理
-
除基取余,直到商为0,余数反转
-
十进制到X进制这个基就是X
十进制到二进制
52/2=26_0
26/2=13_0
13/2= 6_1
6/2= 3_0
3/2= 1_1
1/2= 0_1
结果:ob110100
十进制到八进制
52/8=6_4
6/8=0_6
结果:064
十进制到十六进制
52/16=3_4
3/16=0_3
结果:0x34
快速的进制转换法
8421码及特点
-
8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种
-
在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码
通过8421码的方式进行二进制和十进制的相互转换
二进制 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 | |
十进制 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
二进制数据到十进制数据转换:0b110100=4+16+32=52
十进制数据到二进制数据转换:100-64-32-4=0
二进制到八进制的简易方式(100110)
100 110
4 6
结果046
二进制到十六进制的简易方式(100110)
0010 0110
2 6
结果:0x26
原码反码补码的讲解
有符号数据表示法的几种方式
-
原码、反码、补码
-
所有数据的运算都是采用补码进行的
+7 原码0 111 反码0 111 补码0 111
-7 原码1 111 反码1 000 补码1 001
-
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小
-
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
-
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1
变量的概述及格式
什么是变量
-
在程序执行的过程中,在某个范围内其值可以发生改变的量(例如:苹果的价钱)
-
变量其实是内存中的一小块区域
为什么要定义变量
- 用来不断的存放同一类型的常量,并可以重复使用
变量的定义格式
- 数据类型 变量名 = 变量值;
数据类型的概述和分类
为什么有数据类型
-
我们都知道,变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间
-
java就给我们提供了不同的数据类型,那么针对不同的数据类型,在内存中分配了不同大小的内存空间
JAVA中数据类型的分类
-
基本数据类型
-
引用数据类型:数组,类,接口
基本数据类型的详细讲解
- 数值型
整数型 | 字节数 | 范围 |
---|---|---|
byte | 1(8bit) | -128~127 |
short | 2(16bit) | -215~215-1 |
int | 4(32bit) | -231~231-1 |
long | 8(64bit) | -263~263-1 |
浮点型 | 字节数 | 范围 |
---|---|---|
float | 4(32bit) | -3.40310^38 ~ 3.40310^38 |
double | 8(64bit) | -1.79810^308 ~ 1.79810^308 |
- 字符型
字节数 | ||
---|---|---|
char | 2(16bit) | 0 ~ 2^16 - 1 = 65535 |
- 布尔型
字节数 | ||
---|---|---|
boolean | 1(8bit) | false、true |
整数默认是int类型,浮点数默认是double类型的
定义不同数据类型的变量
class Demo{
public static void main(String[] args) {
int t=222;//定义基本数据的变量,要在数型范围内,222不能使用byte定义
System.out.println(t);
}
}
输出:222
使用变量的注意事项
- 作用域问题
class Demo{
public static void main(String[] args) {
int t=222;
int t=111;//同一作用域不能定义同名变量
System.out.println(t);
}
}
报错原因:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
- 初始化值问题
class Demo{
public static void main(String[] args) {
int t;//没有初始化值
System.out.println(t);
}
}
报错原因:没有初始化值不能直接使用
- 在一行上建议只定义一个变量,可以定义多个,但是不建议
class Demo{
public static void main(String[] args) {
int t=222;int p=111;//可以同行,但不建议
System.out.println(t);
System.out.println(p);
}
}
输出:222;111
数据类型转换之隐式转换
- int+int
class Demo{
public static void main(String[] args) {
int a=10;
int b=20;
int t=a+b;
System.out.println(t);
}
}
输出:30
- byte+int,输出byte
class Demo{
public static void main(String[] args) {
byte a=10;
int b=20;
byte t=a+b;
System.out.println(t);
}
}
报错原因:运算默认输出int,从int转换到byte可能会有数据损失
- byte+int,输出int
class Demo{
public static void main(String[] args) {
byte a=10;
int b=20;
int t=a+b;
System.out.println(t);
}
}
输出:30
JAVA中的默认转换规则
-
boolean类型不能转换为其他的数据类型
-
byte,short,char—int—long—float—double
-
byte,short,char之间不转换,他们参与运算首先转换为int类型
数据类型转换之强制转换
不想改变数据类型的时候可以使用强制转换
强制转换的格式
- 目标数据类型 变量名=(目标数据类型)(被转换的数据);
强制转换的注意事项
-
尽量不要使用强制类型转化,因为可能存在损失精度的问题
-
byte+int结果赋值给byte,加强制类型转换
class Demo{
public static void main(String[] args) {
byte a=10;
int b=200;
byte t=(byte)(a+b);//强制类型转换到byte
System.out.println(t);
}
}
输出:-46
变量相加和常量相加的区别
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由
class Demo{
public static void main(String[] args) {
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;//变量相加,类型转换为int
byte b4 = 3 + 4;
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
}
}
报错原因:变量相加的时候类型转换为int
Java语言中的字符char可以存储一个中文汉字吗?
class Demo{
public static void main(String[] args) {
char ch='你';//字符要加单引号哦,不要忘啦!
System.out.println(ch);
}
}
输出:你
-
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节
-
所以,Java中的字符可以存储一个中文汉字
字符和字符串参与运算
ASCII码表(由输出’a’和’a’+1引出)
class Demo{
public static void main(String[] args) {
System.out.println('a');
System.out.println('a'+1);
}
}
输出:a;98
- 因此得到ASCII码表中’a’为97
ASCII码表中需要记住的三个值
class Demo{
public static void main(String[] args) {
System.out.println('0'+1);
}
}
输出49
'0’为47
class Demo{
public static void main(String[] args) {
System.out.println('a'+1);
}
}
输出:98
'a’为97
class Demo{
public static void main(String[] args) {
System.out.println('A'+1);
}
}
输出:66
'A’为65
字符与字符串运算
class Demo{
public static void main(String[] args) {
System.out.println("hello" + 'a' + 1);
System.out.println('a' + 1 + "hello");
}
}
输出:helloa1;98hello
- "+"号两端任意一端是字符串时,+号做连接作用,从左到右依次计算,(括号例外)
算术运算符的基本用法
什么是运算符
- 对常量和变量进行操作的符号称为运算符
运算符的分类
-
算术运算符
-
赋值运算符
-
比较运算符
-
逻辑运算符
-
位运算符
-
三目运算符
算术运算符有哪些
+,-,*,/,%,++,–
算术运算符的注意事项
-
整数相除只能得到整数。如果想得到小数,请使用浮点数
-
/获取的是除法操作的商,%获取的是除法操作的余数
-
%运算结果的符号,取决于参与运算时左边的符号
算术运算符++和–的用法
++,–运算符的作用
-
自加(++)自减(–)运算
-
++:自加。对原有的数据进行+1
-
–:自减。对原有的数据进行-1
单独使用
- 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
i++、++i、i–、--i
class Demo{
public static void main(String[] args) {
int i=10;//++只能对变量使用
i++;
System.out.println(i);//这一步好像也带点赋值的意思
}
}
输出:11
class Demo{
public static void main(String[] args) {
int i=10;//++只能对变量使用
++i;
System.out.println(i);//这一步好像也带点赋值的意思
}
}
输出:11
class Demo{
public static void main(String[] args) {
int i=10;//++只能对变量使用
i--;
System.out.println(i);//这一步好像也带点赋值的意思
}
}
输出:9
class Demo{
public static void main(String[] args) {
int i=10;//++只能对变量使用
--i;
System.out.println(i);//这一步好像也带点赋值的意思
}
}
输出:9
参与运算使用
-
放在操作数的前面,先自增或者自减,然后再参与运算
-
放在操作数的后面,先参与运算,再自增或者自减
算术运算符++和–的练习
- 请分别计算出a,b,c的值?
class Demo{
public static void main(String[] args) {
int a = 10;
int b = 10;
int c = 10;
a = b++;//先让a变成b,再给b+1,a=10,b=11
c = --a;//先给a-1,再让c变成a,a=9,c=9
b = ++a;//先给a+1,再让b变成a,a=10,b=10
a = c--;//先让a变成c,再给c-1,a=9,c=8
System.out.println(a);//a=9
System.out.println(b);//b=10
System.out.println(c);//c=8
}
}
输出:9;10;8
- 请分别计算出x,y的值?
class Demo{
public static void main(String[] args) {
int x = 4;
//先让y变成x,再给x+1,y=4,x=5
//先给x+1,再给y+x,x=6,y=10
//给y加x的10倍,y=6*10+10=70
int y = (x++) + (++x) + (x*10);
System.out.println(x);//x=6
System.out.println(y);//y=70
}
}
输出:6;70
赋值运算符的基本用法
赋值运算符有哪些
=, +=,-=,*=,/=,%=
注意事项
-
基本的赋值运算符:= 把=右边的数据赋值给左边
-
扩展的赋值运算符:+=,-=,*=,/=,%= += 把左边和右边做加法,然后赋值给左边
-
赋值运算符要求左边的数据必须是一个变量
class Demo{
public static void main(String[] args) {
int a = 10;
a +=1;
System.out.println(a);
}
}
输出:11
看下面的程序是否有问题,如果有问题,请指出并说明理由
class Demo{
public static void main(String[] args) {
//short s=1;s = s+1;变量进行运算,类型转换要为int
//System.out.println(s);
short v=1;v+=1;//"+="会自动类型强制转换
System.out.println(v);
}
}
输出:2
关系运算符的基本用法及其注意事项
关系运算符有哪些
== ,!= , < , > , <= , >= , instanceof
注意事项
-
无论你的操作是简单还是复杂,结果是boolean类型
-
“==“不能写成”=”
class Demo{
public static void main(String[] args) {
int a=10;
int b=11;
System.out.println(a==b);
}
}
输出:false
完