1.背景:
在操作系统中,包含C语言和汇编语言两种,其他高级语言需要通过安装运行环境来使操作系统辨别其内容.
C语言特点:
- 速度最快
- 性能最高
- 书写很慢
- 成本更高
特殊的:任何功能都能通过所有语言进行实现
C++相比较于C语言 代码更加简洁,但是Java比C++更加精简.
在各种大厂中语言的生态环境很重要
JAVA地位和GO差不多,都是网络核心语言
Python比较简单傻瓜 可以用现有的各种方法实现 但是遇到特别的问题就不好解决
这时生态环境社区就凸显出其重要性
生态环境社区
- 创建团队
- 初步完善Java
- 公开
- 邀请人进行 测试 性能调优 补充
共同形成了Java社区
阿里是目前最优秀的Java社区
2.学习
推荐进入
- infoq
- CCF官网
- 优快云 (初学者最常用 但是里面有很多错误)
分布式
- 支持整合很多电脑的同时计算一个任务
- 多线程是同时能进行多少个任务
3.Java
JDK 进行初步编译 把.Java文件编译成.class文件 用法:Javac
JRE 运行.class文件(.class操作系统也不认识) 用法:Java
SE Java核心团队(原始) 自带的初级功能
JavaEE 桌面网站web开发
JavaME 手机端开发
SDK 使用代码样例 有调用样例
类的命名
类的命名标准的命名规范为(类名 FirstSample 就遵循了这个规范):类名是以大写字母开头的名词。
如果名字由多个单词组成,每个单词的第一个字母都应该大写(这种在一个单词中间使 用大写字母的方式称为骆驼命名法。以其自身为例, 应该写成 CamelCase)。 源代码的文件名必须与公共类的名字相同,并用 .java 作为扩展名。因此,存储这段源代 码的文件名必须为 FirstSample.java (再次提醒大家注意,大小写是非常重要的, 千万不能写 成 firstsample.java)
- 文件夹名字小写开头
- 变量名小写开头
- 方法名小写开头
- 其他文件名字小写开头
- 只有java类名字和类文件名字是大写开头
8种常用字符类型
名称 | 位数 | 取值范围 |
byte | 8位 | 2^8(-2^7-2^7-1) |
short | 16位 | 2^8(-2^15-2^15-1) |
int | 32位 | 2^8(-2^31-2^31-1) |
long | 64位 | 2^64(-2^63-2^63-1) |
float | 32位 | 10^38(大约+3.40282347E+38F)(有效位6-7位) |
double | 64位 | 10^308(大约+1.79769313486231570E+308)(有效位15位) |
char | 根据编码决定 | |
boolean | 32位 | *有两个值:false,true.判定逻辑条件 |
*float类型补充小范围内精度高 范围扩大开始丢失精度 离0越近越密集 越远越大
*整型值和布尔值之间不能相互转换
float和double类型表示方法
float | 0(1位) | 00000000(8位) | 00000000000000000000000(23位) |
符号位 | 阶位 | 数值位 | |
0-255 | 0--2^23-1 | ||
假设阶位数字为x | 假设数值位为y | ||
value=( 2^(x-127) * y) | |||
double | 0(1位) | 00000000000(11位) | (52位) |
4.编码
计算机中最小存储单元 1b=8bit
视觉信息
形状,颜色,亮度
显示器
像素点
坐标(xy),三原色比例(红,绿,蓝),亮度
234,456,1,2,3
234,456,10,20,30
同样的颜色 同样的比例数值越大亮度越高
五个数字代表六种信息
用short类型表示像素点的坐标 和分辨率有关 1980*1024 byte不够 int太大
用byte类型表示颜色的属性
颜色取值0--255
short类型表示坐标时两个符号位16 + 16 = 32位
byte类型表示颜色时 8 + 8 + 8 = 24位
所以一个像素点的 6 个信息就可以用32 + 24 = 56 位bit信息来表示;
每个像素点读取时都需要读取56bit 在这种情况下读取一个图像 一个文字都需要传输大量的像素点和大量的数据
这时形状库出现了 把每个形状事先在形状库中进行保存 使用时直接从形状库中提取出来
但是每个形状在形状库中也占用了很大 我们可以给每个形状设定一个代号 需要A就去调用A形状的代号
从形状库中提取形状代号 用代号存储 存储量小
代号就是编码
磁盘
磁盘类似于光盘(从侧面观察类似于一个长方体) 正反两面都存有数据
在磁盘的两面镶嵌着很多很小的磁颗粒 每个磁颗粒中存着一个 0 或 1
每一个磁颗粒包含着 N极 和 S极 对外展示N表示1 对外展示S表示0
信息的传输是靠电压传输 高电压代表1 低电压代表0
传输过程中会有高低电压 每一个磁颗粒都有自己的磁场
产生相对位移切割磁场进而产生磁感线 产生电压电流 进而传输数据
但是切割磁感线产生的电压是正反电压而不是高低电压
高低电压传输的方向是不变的 正反电压传输的方向会相反
解决正负电压的问题
原始磁头加一个3v电压就将正负电压变成了高低电压3v+2v=5v 3v+(-2v)=1v将高低电压传输以编码的形式编码对应提前存储好的格式像素点
5.变量
在 Java 中,每个变量都有一个类型( type)。在声明变量时,变量的类型位于变量名之 前。这里列举一些声明变量的示例:
double salary;
int vacationDays;
long earthPopulation;
boolean done;
每个变量结尾都已 " ; "结尾
变量名中所有的字符都是有 意义的,并且大小写敏感。变M名的长度基本上没有限制。
变量初始化就是给变量第一次赋值
常量
final修饰的常量都要大写
常量不能再次更改(面试点)
作用
- 修饰常量
- 修饰的类不能被继承
- 修饰的方法不能被重写
防止指令重排序(并发)
运算符
在 Java 中,使用算术运算符 + 、-、 * 、/ 表示加、减、 乘、除运算。 当参与 / 运算的两个 操作数都是整数时, 表示整数除法;否则, 表示浮点除法。 整数的求余操作(有时称为取模) 用 % 表示。
函数
在 Math类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函 数也不同。 要想计算一个数值的平方根, 可以使用 sqrt 方法:
double x = 4;
double y = Math.sqrt(x);
System.out.println(y); // prints 2.0
使用Java中Math方法时需要在最上面输入
import java.lang.Math.*;
public class Test{
public static void main(String[] aaa){
int a = 289;
double s = Math.sqrt(a);
double f = Math.pow(2,22);
System.out.printIn(f);
}
)
数值类型的转化
- 如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。
- 否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型
- 否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。
- 否则, 两个操作数都将被转换为 int 类型。
自增和自减
a = a ++ // a = a, a = a+1 只有第一个等号成立
int b = a++ 就行
== 判断两个是否相等
!=检测不相等
&& 并且