java 是一门编程语言
网页
(前端php html javaScript 后端 java)
服务器 网站
java课程体系:
java程序设计 语法
java SE java的核心类库
数据库 Oracle/Mysql
html javaScript 前端框架
后端
流行的框架
C++ 大型网游 英雄联盟
sun 詹姆斯.高斯林 JAVA之父
2009年sun被Oracle公司收购了 74亿美元
静态的网页 跨平台不兼容
mac windows linux 红旗 ubuntu 麒麟
1.安装java开发环境:
JDK: java developer Kit java开发工具包
安装JDK之后就可以进行java开发
JRE: java runtime environment java运行环境
是一个java程序能够运行的最小单位
一个java程序只需要JRE环境就可以运行了
1.JVM: java virtual machine java虚拟机
2.Libraries
JDK安装完成之后生成一些目录:
bin 存放的是java的命令
javac 编译java源代码的命令 把java源代码编译成 .class文件
.class文件是字节码文件
include 存放一些头文件 .h 文件
jre
lib java的核心类库
src.zip java核心类的源代码
JDK 包含 JRE 和 java的命令 以及核心类库
JRE 包含java虚拟机 一些必须的东西
系统: 32位 64位
win xp 32位
win 7 win 8 win10 64位
在64位系统里面 如果安装 32位的软件则安装在Progma File(x86)
64位的软件则安装在Progma File
x86 32位系统
x64 64位系统
配置环境变量:
新建 JAVA_HOME JDK的安装路径 C:\Program Files\Java\jdk1.8.0_121
Path 添加 %JAVA_HOME%\bin
添加 %JAVA_HOME%\jre\bin
新建 CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
JVM虚拟机在加载类的时候查找的路径
写一个最简单的java程序
验证java环境是否已安装好
验证环境配置有没有问题
过程:
第一步:新建文本文件 .txt
第二步:打开该文件 编写源代码
第三步:保存退出 修改文件名 及 文件后缀 .java
.java 是java的源代码 程序员编写的程序
第四步:进入命令提示符 cmd
第五步:找到 .java文件 切换目录 cd切换目录
第六步:javac xxx.java 编译java源代码
如果没有语法错误,生成一个 xxx.class 字节码文件
第七步:java xxx 启动Java虚拟机 运行 java程序
java xxx 没有.java,也没有.class
终端 cd
ls
touch HelloWorld.java
Eclipse 集成开发环境 IDE environment
Linux命令
盘符的切换 D:
一般的目录切换: cd 目录
查看当前目录下有哪些目录: dir
每个目录下都有两个目录:
. 当前目录
.. 代表上级目录
Eclipse 集成开发环境
Eclipse依赖于JDK
第一次打开Eclipse
Workspace 编写代码所存储的路径 一般设置在 学习 盘符里面
一般来说不要中文
new java Project
new Package
new class 类名
添加
public static void main(String[] args){
System.out.println(“Hello World!\n”);
}
点击 run 就可以运行程序了
熟练使用Eclipse 但是不要过度依赖Eclipse
指法
二阳指 二指禅
F J 键盘 定位 左右食指
ASDF JKL;
盲打
眼睛看屏幕
java基础语法
程序: 核心是处理数据 音乐 图片 文字论文
在计算机中 或者 在硬盘 0和1
1.变量
java程序中要保存数据用变量
变量就是用来存储数据的载体
对应一块内存区域
(1)变量的声明 定义
数据类型 变量名;
变量名 也 称为 标识符
标识符的规则:
1. 由数字、字母、_ 和 $ 组成
2. 不能数字开头
3. 不能和java的关键字冲突
4. 不能重复 相同名字的变量名在同一个作用域下面不能被重复定义
5. 中文也可以作为标识符 但不建议使用
6. 建设的意义:
争取用英文 不行再用拼音
dayOfYear 首单词小写 后面的每一个单词首字母都是大写 驼峰式
chengJi
day_of_year 下划线
争取做到见名知义
(2)变量的初始化
1. 变量必须初始化之后才能使用
2. 变量必须定义之后才能使用
3. 变量不能重复定义
让一个程序员发疯最简单的办法 改三次需求
变量可以存储不同的值
(3)变量的使用
1. 改变变量的值
int var = 100;
var = 200;
2. 取变量的值
System.out.println(var);//取变量的值输出到控制台
int score = var; //把 var的值赋值给score
练习:
定义变量保存你自己个人的信息
姓名 String name = "王导"
年龄
身高
学号
性别
输出到控制台
2.基础数据类型 java中的8种基本数据类型
java里面只有两种数据类型: 基本数据类型 引用数据类型
为什么要分数据类型:
1. 方便运算
2. 方便存储 节省内存
取值范围 反应 存储的时候内存的大小
内存的单位:
1T = 1024G
1G = 1024MB
1MB = 1024KB
1KB = 1024B
B 字节单位
1B = 8个二进制位 二进制的数有8位
十进制:0-9组成 人
八进制:0-7组成
十六进制:0-9 a-f 组成
二进制:0 1 组成 只能识别二进制
世界上只有10种人,一种是能懂二进制的,另外一种是不懂二进制的
数值类型
整型类型
byte [-128,127] [-2^7,(2^7)-1]; 8个二进制位
short [-2^15,(2^15)-1] [-32768,32767] 16个二进制位
int [-2^31,(2^31)-1] [-2147483648,2147483647]
long [-2^63,(2^63)-1]
注意:
浮点类型都是不精确的数值
浮点类型(小数) 存储方式和整数类型不一样 用指数记数法
float 单精度浮点类型 取值范围 +-3.4*10^38 次方
4字节 32个二进制位 表示最大的精度范围 6-7位
最高位是符号位
1个符号位,8个指数位,23个小数位
任何一个小数都能够表示成为:
1.1010101101 *10 ^n
二进制*10^n
0.5 二进制 0.1 1*(2)^-1
0.25 二进制 0.01
0.125 0.001
3.125 011.001 --> 1.1001 * 10^1
1.111111111111111111111111 ~ 2
1/2+1/4+1/8
double 双精度浮点类型
8字节 64个二进制
1个符号位 11个指数位,52个小数位 +-1.79*10^308
表示最大的精度范围 15-16位
对于一个float类型的数据 是否等于0
float f = 0;
(-0.0000001,0.0000001) 区间范围都表示0
注意:
1.在java中,直接给出的整数直接值默认是int类型,如果需要表示超出int表示范围的整数时,需要加L/l
2.在java中,直接给出的浮点类型数值为double类型
如果想要表示一个直接值是float类型,那和需要在该浮点值之后加f/F
字符类型
char 一个字母 或者一个汉字
用单引号引起来的
2个字节 本质上是一个无符号的整数类型 [0,65535] (2^16)-1
16个进制 1111 1111 1111 1111 == 0xffff
char c = '中'
char c1 = 20013;
char c2 = '\u4e2d'
都表示'中'
底层中都是 100111000101101 这样一串二进制
布尔类型
boolean 1个字节
boolean类型只有两个取值 true false
练习:
编写一个程序,计算100年多少个毫秒
再编写一个程序
计算 10.0-7.1
10.0-3.9
boolean 1字节 8个二进制位
数据类型字节数的多少直观反应出来的是取值范围的大小
byte 1字节 取值范围 [-128,127]
1111 1111 = -(2^6+...+2^0) = -127 负数不是这样存储
0111 1111 = 2^6+..._2^0 = 64+32+..+1 = 127
数值有正负之分
计算机中用二进制的最高位来表示符号位
0 表示正数
1 表示负数
234 --> 二进制 11101010
2*10^2 + 3*10^1 + 4*10^0
位*10^权重
进制: 位*权^权重
十进制转换成二进制 对2求余 余数从下往上
3个二进制位对应1个八进制位
4个二进制位对应1个十六进制位
在java程序中,以0x打头的数值表示十六进制的数
0x 0X
以0打头的数值表示八进制的数
0xbf -> 1011 1111 -> 0277 -> 010111111
01010101 = 2*6+2^4+2^2+2^0 = 64+16+4+1=85
二制转换成十进制
计算机中保存数据是以补码的形式存储
二进制分为原码、反码、补码
原码: 整数转换成二进制 最高位为符号位 0正1负 其它位为数值位
反码: 针对负数而言 符号位不变 其它位按位取反 满足正数加负数
补码: 针对负数而言 负数的补码=其原码符号位(始终不变)不变,其它位按位取反加1
正数的原码、反码、补码都是自己本身
byte
3 0000 0011 0000 0011
-3 1000 0011 1111 1101
----------------------------
1000 0110 1 0000 0000 只能保存8个二进制位 0000 0000 == 0
不等于0 所以计算机底层中存储数据从来不用原码
0000 0011
1111 1100
----------
1111 1111 1000 0000 = 0
-2+(-4) = -6
1000 0010 1111 1101 1111 1110
1000 0100 1111 1011 1111 1100
------------------------------------
1 1111 1010 1111 1010 最高位1表示负数补码
1111 1001
1000 0110 = -6 用补码计算结果正确
1111 1000 = 1000 0111 = - 7
-128 如果是8个二进制位 则补码是 1000 0000
128 1 0000 0000
0 1111 1111
1 1000 0000
byte
1111 1111
1000 0000
1000 0001 = -127
3-5
0000 0011
0000 0101
1111 1110 = 1000 0001 = -1
3+(-4) = -1
用原码计算 结果错误
0000 0011
1000 0100 原
---------
1000 0111 = -7
用反码计算 结果是正确的
1111 1011 反
0000 0011
------------
1111 1110 负数 1000 0001 = -1
short 2字节
char 2字节
int 4字节
long 8字节
float 4字节
double 8字节
1G硬盘 多少个byte类型的数据
多少个int类型的数据
数据类型转换:
隐式类型转换:
byte char short int 给一个取值范围之内数值是可以直接赋值的
byte->short->int->long->float->double 反之则不行
char->int
但是不能将一个int变量的值赋值给byte、char、short,即使是在该变量的取值范围之内也不行
强制类型转换:
不能进行隐式转换时可以进行强制类型转换
目标类型 变量 = (目标类型)变量;
double d = 3.1415926734;
float f = (float)d;//强制类型转换
强制类型转换可能造成
1.精度缺失
2.数据溢出
提前预测数据类型,避免没必要的类型转换
3.操作符(运算符)
(1) 算术运算符
+ - * / %
double d = 10/3;
(2) 关系运算符
< <= > >= == !=
(3) 逻辑运算符
&& || !
(4) 位运算符
& | ^ ~ >> >>> <<
(5) 赋值运算符
=
混合赋值 += -= *= /= %= &= |= >>= >>>= <<=
(6) 三目运算符
?:
(7) 其它
, () [] . {}
4.语句 分支选择 条件循环语句
5.函数
6.面向对象