计算机硬件组成:CPU、内存、显卡、硬盘、主板。
【注】在Java开发中运行的所有程序,要考虑的硬件如下:
CPU:CPU的使用率
内存:内存的占用率
硬盘:数据存储
带宽:网络承载量
【补充】涉及到服务器操作,需要考虑到的带宽问题主要是上行带宽。
常见的操作系统:
(1)PC端:Windows、Linux、UNIX、macOS、Windows Server
(2)移动端:塞班、IOS、Android(其实并不算一个真正的操作系统)
【说明】操作系统不同于操作方式。操作方式主要分为图形化界面操作和命令行操作。
(1)计算机中最小存储单元是字节(byte)。
【注】一个字节(byte)对应8个bit位,即八个二进制位。
(2)存储单位:1024 Byte = 1 KB; 1024 KB = 1 MB; 1024 MB = 1 GB;
1024 GB = 1 TB; 1024 TB = 1PB; 1024 PB = 1 EB;
(1)开发中使用的进制:
进制 | 基数范围 | 进制关系 |
---|---|---|
二进制 | 0,1 | 逢二进一 |
八进制 | 0~7 | 逢八进一 |
十进制 | 0~9 | 逢十进一 |
十六进制 | 0~9 A~F | 逢G进一 |
(2)进制转换
①十进制转二进制:除二取余法。
②二进制转十进制:
如1011 1110(2)转十进制:21+22+23+24+25+27 = 190
③十六进制的一位对应二进制的四位
④八进制的一位对应二进制的三位
【注】十六进制展示:0x 或 0X 开头,如 0x1234与0X1234、0xabcd与0xABCD两两均为一个含义
八进制展示:0开头,如 01234 077
(1)作用:原码,反码和补码的使用是用来解决计算机运行逻辑复杂度。
(2)正整数:原码,反码和补码是一致的,都是对应当前正整数的二进制展示方式
(3)负整数:① 原码:对应正整数二进制展示方式,但是最高位表示符号位,占位为1
② 反码:相对于原码按位取反,但是符号位不变
③ 补码:反码末位 + 1
(1)开启Windows命令行:Windows + R 键 ==> 输入:cmd,然后回车。
(2)dir 命令:查看当前工作目录下的所有文件和文件夹。
(3)cd 命令:切换工作目录。格式:cd 指定路径
(4)mkdir 命令:创建文件夹。格式:mkdir 文件夹名
(5)rd 命令:删除文件夹。格式:rd 文件夹名
(6)echo 命令:格式如:echo 123>1.txt 作用:创建1.txt文件,并在其中存入“123”三个字符
(7)del 命令:删除文件。格式:del 文件名.文件类型后缀
【注】删除操作是直接抹掉数据,不放入回收站。
(8)* 通配符(慎用)
(9)方向键 ↑ 和 ↓:回顾之前的命令
(10)cls 命令:清屏。
(11)exit 命令:退出。
还有ipconfig、ping等。
(1)1995 年出现。
(2)1996 年,Java明确Java WEB方向。
(3)2009年,Oracle公司收购Sun公司。
【小知识点】詹姆斯·高斯林被称为“Java之父”。
【说明】主流JDK版本:1.6、1.7、1.8
新版本:9、10、11、12、13、14(不建议使用)
(1)官网下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
(2)安装注意事项:不允许安装到中文路径下;最好不要安装到C盘(系统盘)。
(1)新建变量:JAVA_HOME 变量值:自己的 JDK安装路径
(2)新建变量:CLASS_PATH 变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(3)编辑变量:Path 变量值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
【注】(1)、(2)推荐在系统变量中新建;Path变量电脑本身就已存在,只需编辑,在其后加上上述配置即可。
DOS命令中输入:java、javac、java -version
class FirstJava {
public static void main(String[] args) {
System.out.println("欢迎来到Java课堂!");
}
}
打开DOS命令窗口
cd命令进入java文件所在工作目录中,输入 “ javac First Java.java ”,回车。然后会生成对应的“.class”文件。【编译操作】
继上述操作之后,输入“ java FirstJava ”,回车。然后会输出“欢迎来到Java课堂!”【执行操作】
【分类】
(1)整数:如:1 2 3 -1 -2 -3
(2)小数(浮点数):如:3.14 0.618
(3)布尔类型(boolean):true/false
(4)字符常量:使用英文单引号包含的单个元素,如:‘A’ ‘1’ ‘我’
(5)字符串常量:使用英文双引号包含的所有内容,如:“abcd” “1” “我爱我的祖国”
(1)编码集:
①GB2312老国标:支持中文简体字和一部分少数民族文字
②GBK 新国标:支持中文简体字和少数民族文字
③UTF-8 万国码:支持世界上通用文字
④端页面 数据库软件编码集全部都是对应的UTF-8)
⑤BIG5 :中文繁体字编码,主要流行于中国香港,中国澳门,中国台湾省,新加坡
⑥ASCII码:美国XXXXX协会制定的一个标准编码
ASCII码【说明】:大写英文字母编码集编号是小于小写字母;
大写小写字母之间非连续;
0 ~ 31字符是不可见字符 ;
【重点】任何时候使用字符常量有且只能是’字符本身。
(2)转义字符
①代码中有些标点符号有特殊含义
如: " 和 ’ 如果需要在代码中使用到 " 、 ’ 作为其他操作,这里需要使用 \ 做转义字符
②代码中也存在一些本身没有含义的字符,通过 \ 转义之后,变成有一定含义的字符
如: \n 回车 \t 制表符 \r 换行
(1)整型
整型 | 占用内存空间大小 | 数据范围 |
---|---|---|
byte | 1字节(8bit) | -128 ~ 127 |
short | 2字节(16bit) | -32768 ~ 32767 |
int | 4字节(32bit) | -2^31 ~ 2^31 - 1 |
long | 8字节(64bit) | -2^63 ~ 2^63 - 1 |
(2)浮点型
浮点型 | 占用内存空间大小 | 数据范围 |
---|---|---|
float | 4字节(32bit) | ±3.4*10^38 |
double | 8字节(64bit) | ±10^308 |
(3)字符型
字符型 | 占用内存空间大小 | 数据范围 |
---|---|---|
char | 2字节(16bit) | 能够保存中文 |
(4)布尔类型
布尔类型 | 占用内存空间大小 | 数据范围 |
---|---|---|
boolean | 视情况而定 | true,false |
格式:数据类型 变量名 = 对应数据类型的初始化数据;
其中:
①数据类型:告知开发者,编译器,当前变量中保存的数据类型是什么?(目的是为了保证数据类型一致化)
②变量名:对于当前变量的称呼,可以更好的使用当前变量
③=:赋值号!将赋值号右侧的数据,赋值给左侧的变量
④对应数据类型的初始化数据:考虑数据类型一致化的情况下,给予当前变量一个初始化数据。
(1)Java中的标识符有且只能使用英文字母(A ~ Z a ~ z), 数字(0 ~ 9) 以及唯一可以使用的标点符号 下划线_ 。其他任何字符都不可以使用!!!
(2)标识符要求英文字母开头。
(3)标识符没有严格的长度限制,但是会根据实际的使用情况来约束标识符长度
(4)Java中的标识符严格区分大小写
(5)标识符要符合【见名知意,动宾结构】
推荐方式如:getStudentAge 、setStudentAge、studentScore 、studentGender
不允许如:lg lp yy nn ez gjz 采用拼音简写是不允许的!laoGong 不行!payTime peyBeiZhu 不允许!
(6)标识符要求符合一定的命名要求
a. 驼峰命名法:
小驼峰
一般用于变量名,方法名
首字母小写,之后的每一个单词首字母大写
如:getStudentAge 、setStudentAge、studentScore 、studentGender
大驼峰
一般用于类名,接口名
所有单词首字母大写
如:FirstJava 、Demo1、 Person 、UserService、StudentDao
b. 下划线命名法:
一般用于Java中的常量
如:MAX_VALUE 最大值、DEFAULT_CAPACITY 默认容量
(7)Java中已经被占用的关键字和保留字不能用于自定义标识符,即IDE中变颜色的都不可以使用
4. 【总结】
(1)变量定义一行只定义一个,并且初始化操作,赋予当前变量一个符合当前数据类型的初值
(2)使用对应变量,直接使用变量名即可!!!
(3)double类型到float类型精度丢失问题
Demo4.java:4: 错误: 不兼容的类型: 从double转换到float可能会有损失
float floatNumber = 3.14;
^
1 个错误
计算机保存数据,考虑第一原则是数据的精度,double类型精度是远远高于float类型,计算机会将所 有的小数都看作是double类型数据。3.14默认为double类型,这里赋值给float是存在精度不一致报错。这 里需要告知计算机,这里3.14是一个float类型,在3.14之后加上一个大写F
即: float floatNumber = 3.14F;
(4)【推荐】保证数据类型一致化,在给long类型变量赋值时加上一个大写L,告知编译器这里使用的是一个long类型数据
(5)要求字符类型的常量有且只能使用字符本身
(6)变量名未定义不能使用
(7)Java中变量未赋值不能使用
语法:(1)++ 自增运算符 操作的变量自增1 等价于 += 1
(2)-- 自减运算符 操作的变量自减1 等价于 -= 1
(3)自增自减运算符在变量之前:首先执行自增自减操作,再来完成当前行代码的运行
(4)自增自减运算符在变量之后:首先执行当前行代码,再来执行自增自减操作
【注意】自增自减运算符【有且只能操作变量】,不可以操作常量
【注意】(1)逻辑运算符运算的结果都是boolean类型数据;(2)&&与||的逻辑运算符的短路原则
【说明】代码从上到下,从左到右执行
if 分支结构
【格式】
if (/* 条件判断 */) {
// 语句体
}
【执行流程】当前程序运行到if结构时,首先执行条件判断,条件判断的结果是一个boolean类型,如果条 件判断为true,执行语句体,为false,不能执行语句体。最后都会执行到大括号之外
if - else 分支结构
【格式】
if (/* 条件判断 */) {
// true语句体
} else {
// false语句体
}
【执行流程】代码执行到if else结构运行,首先判断if之后的条件判断,如果条件判断为true,执行true语句体,如果条件判断为false,执行false语句体。
if - else if 分支结构
【格式】
if (/* 条件匹配1 */) {
// 处理方式1
} else if (/* 条件匹配2 */) {
// 处理方式2
} else if (/* 条件匹配3 */) {
// 处理方式3
} else {
// 无匹配项最终处理方式
}
【执行流程】代码执行到if else if结构,从上至下,匹配if之后小括号里面的内容,条件匹配成功,执行对应的处理方式,结束分支结构运行。如果没有任何的一个条件匹配,执行else中的语句,也会终止条件匹配。
switch - case 分支结构
【格式】
switch (/* 变量 */) {
case 常量选择1:
// 处理方式1;
break;
case 常量选择2:
// 处理方式2;
break;
case 常量选择3:
// 处理方式3;
break;
default:
// 最终处理方式;
break;
}
【执行流程】代码运行到switch case结构,首先取出switch之后小括号中变量保存的数据,匹配switch 大括号以内的case选择,找到对应的常量选择匹配。如果找到了对应的匹配选择,执行对应的处理方式。如果没有找到匹配选择,执行default里面的处理方式。这里【break】关键字用于结束switch case运行。
while循环
【格式】
while (/* 循环条件 true or false */) {
// 循环体
// (循环条件变更)
}
【执行流程】当前程序运行到while循环结构时,首先判断while之后的小括号里面的循环条件是否为true,如果为true,执行循环体,在回到循环条件判断,直到循环条件为false,终止循环!!!
do - while 循环
【格式】
do {
// 循环体
// (循环条件变更)
} while (/* 循环条件判断 */);
【执行流程】当程序执行到do - while循环结构时,首先执行一次循环体(循环条件变更),再来判断while中循环条件判断是否为true,如果为true,继续执行,如果为false,终止循环。
总结
(1)循环过程中最核心的内容就是循环变量,需要对于循环变量的执行的过程中数值变量完全掌握!!!如果无法明确循环的次数,循环变量的值,循环的过程,可以将循环代码中变量的变更过程记录。
(2)循环过程中需要注意无限循环问题,控制无限循环问题的出现。一定要保证循环条件有效性或者代码中存在一个跳出循环的机制。
(3)do while循环中,第一次循环体的执行是没有经过任何的条件判断的,需要注意!
(4)while和do while循环结构是可以进行互换的。
(5)然后在while和do while之间考虑使用的情况下,一般推荐使用while循环。但是不代表do while没有实际的使用效果。
导包:java文件class代码上一行,输入:import java.util.Scanner;
创建Scanner变量,在class的方法里面创建Scanner变量,代码:
Scanner sc = new Scanner(System.in);
(1)获取int类型 :int类型的变量 = sc.nextInt();
(2)获取float类型 :float类型的变量 = sc.nextFloat();
(3)获取double类型:double类型的变量 = sc.nextDouble();
(4)获取char类型 :char类型的变量 = sc.nextLine().charAt(0);
=========================================================================
(1)有基础不等于可以开小差,更不可眼高手低!
(2)细节决定成败——程序的成功不是写完,而是运行出想要的结果。这个过程来源于写代码过程中的每一个操作,每一次按键。
(3)活用(举一反三)——学来知识,会用重要,灵活运用与思考更重要。
(4)注意总结——包括知识点,经验。