C语言书写速度慢,成本高,但是性能最好,速度最快,C++其次Java在C++后面,java生态比C#更好,因为java生态实现较早
JAVA的11个关键术语
1 ) 简单性:Java 语法是 C++ 语法的一个“ 纯净” 版本。
2 ) 面向对象 :开发 Java 时面向对象技术已经相当成熟。 Java 的面向对象特性与 C++ 旗鼓相当。Java 与 C++ 的主要不同点在于多重继承,在 Java 中,取而代之的是更简单的接口概念。
3 ) 分布式 :Java 有一个丰富的例程库,用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用 程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。很多电脑进行一个任务
4 ) 健壮性:Java 和 C++ 最大的不同在于 Java 采用的指针模型可以消除重写内存和损坏数据的可能性,即修改东西不容易出错
5 ) 安全性:Java 适用于网络 / 分布式环境。 为了达到这个目标,在安全方面投入了很大精 力。使用 Java 可以构建防病毒、 防篡改的系统基础安全性做的较好,例如:底层校验
6 ) 体系结构中立:编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成 与特定的计算机体系结构无关的字节码指令来实现这一特性。 精心设计的字节码不仅 可以很容易地在任何机器上解释执行,而且还可以动态地翻译成本地机器代码
7 ) 可移植性:在 Java 中,数据类型具有固定的大小,。 二进制数据以固定的格式进行存储和传输, 消除了字节顺序的困扰。字符串是用标准的 Unicode 格式存储的。
8 ) 解释型 :Java 解释器可以在任何移植了解释器的机器上执行 Java 字节码。
9 ) 高性能 :字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定 CPU 的机 器码。
10 ) 多线程 :多线程可以带来更好的交互响应和实时行为。模拟同时运行很多任务, 是拟态的
11 ) 动态性 :从各种角度看, Java 与 C 或 C++ 相比更加具有动态性。它能够适应不断发展 的环境库中可以自由地添加新方法和实例变量, 而对客户端却没有任何影响。在 Java 中找出运行时类型信息十分简单。
常用Java程序设计环境
JDK:把.java变成.class操作系统并不识别.class文件
JRE:直接运行.class文件
SE: 核心即原始创建java的团队给JAVA定义的最初始的核心功能
EE:JAVA全套开发 全站开发 网站开发
ME :手机端开发
SDK :使用代码样例 例如写代码后面给定义解释该如何去写这一串代码 调用样例
Java基本程序设计结构
1一个简单的Java程序
public class FirstSample
{
public static void main(String[] args)
{
System.out.println("We will not use 'Hello, World!"');
}
}
命名方法:驼峰命名法
文件夹名字小写开头
变量名小写开头
方法名小写开头
其他文件名小写开头
只有Java类名字和类文件名字是大写开头
2.数据类型
byte-8(1字节) short-16(2字节) int-32 (4字节) long-64(8字节)
float-32(4字节) double-64(8字节)
char-根据编码决定(8,16,32)
在Java中boolean-32(4字节)
byte x = 34; =32 + 2 = 00100010正数源码就是补码
byte x2 =-34;10100010---11011101----11011110
有效位数,数越大精度越低
float精度并不高,小范围之内精度高,大范围内丢失精度较高
计算机最小存储单元是1B=8bit
高低电压传输,必须排队出来
存的数据越多,阻塞概率就越大
小多,大少
boolean类型设置32位,为了降低阻塞概率
屏幕由像素点组成
每个像素点都有自己的坐标,每个像素点包含5个数字能代表6个信息
同样的颜色,同样的比例,数越大,颜色越亮
16+16 = 32; 8 + 8 +8 =24;
用bit类型无符号位写,JAVA不支持无符号位 short类型表示XY坐标
三原色红绿蓝每个取值范围0-255 56bit的数据就能表示一个像素点的全部信息
假设平均200个像素点
char类型和编码的由来,编码不是地址,是上面像素点的组合排列方式的代号
记事本存的是编码,还拥有库,当你输入后会与库匹配,然后显示出来
都有磁颗粒都有N极和S极,对外展示 N-1 S-0
产生相对位移就会产生相对切割磁感线的行为就会产生相对电压
码点( code point) 是指与一个编码表中的某个字符对应的代码值
在基本的多语言级别中,每个字符用 16 位表示,通常被称为代码单元( code unit) 而辅助字符采用一对连续的代码单元进行编码。这样构成的编码值落人基本的多语言级别中空闲的 2048 字节内, 通常被称为替 代区域
我们强烈建议不要在程序中使用 char 类型,除非确实需要处理 UTF-16 代码单元。最好将字符串作为抽象数据类型处理
3.变量
在 Java 中,每个变量都有一个类型( type)。在声明变量时,变量的类型位于变量名之 前。这里列举一些声明变量的示例: double salary; int vacationDays; long earthPopulation; boolean done; 可以看到,每个声明以分号结束。由于声明是一条完整的 Java语句,所以必须以分号结束。 变量名必须是一个以字母开头并由字母或数字构成的序列。需要注意,与大多数程序设 计语言相比,Java 中“ 字母” 和“ 数字” 的范围更大。字母包括 ’ A’ ~ ’ Z’、 ’ a 1 ~ ’ z 1 、 或在某种语言中表示字母的任何 Unicode 字符。例如, 德国的用户可以在变量名中使用字母 ‘ 3’;希腊人可以用 71。同样, 数字包括 '0' ~ '9 ’ 和在某种语言中表示数字的任何 Unicode 字 符。但 V 和 '©’ 这样的符号不能出现在变量名中,空格也不行。变量名中所有的字符都是有 意义的,并且大小写敏感。变M名的长度基本上没有限制
3.1 变量初始化 声明一个变量之后,必须用赋值语句对变量进行显式初始化, 千万不要使用未初始化的 变量。例如, Java 编译器认为下面的语句序列是错误的:
int vacationDays;
System.out.println(vacationDays): // ERROR variable not initialized
要想对一个已经声明过的变量进行赋值, 就需要将变量名放在等号(=) 左侧, 相应取值 的 Java 表达式放在等号的右侧。
int vacationDays;
vacationDays = 12;
也可以将变量的声明和初始化放在同一行中。例如:
int vacationDays = 12;
最后,在 Java 中可以将声明放在代码中的任何地方。例如,下列代码的书写形式在 Java 中是完全合法的:
double salary = 65000.0;
System,out.println(salary);
int vacationDays = 12; // OK to declare a variable here
在 Java 中, 变量的声明尽可能地靠近变量第一次使用的地方, 这是一种良好的程序编写风格。
3.2常量
final 修饰的常量所有的字母都要大写
final作用:
1.修饰常量;
2.修饰的类不可以被继承;
3.修饰的方法不可被重写;
4.防止指令被重排序(并发);
可以使用关键字 static fina丨设置一个类常量
3.3运算符
3.3.1 数学函数与常量 在 Math类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函 数也不同。 要想计算一个数值的平方根, 可以使用 sqrt 方法:
double x = 4;
double y = Math.sqrt(x);
System.out.println(y); // prints 2.0
3.3.2 数值类型之间的转换
经常需要将一种数值类型转换为另一种数值类型。
实线表示无损转化,虚线表示能转化但是精度会丢失
3.5.4 结合赋值和运算符
可以在赋值中使用二元运算符,这是一种很方便的简写形式。
例如: X += 4; 等价于: x = x + 4; (一般地, 要把运算符放在 = 号左边,如 *= 或 %=)。
System.out.println(a++);
System.out.println(a);
当++那行不存在,先运行其他然后运行++
结果为0,只能有一个=生效,是前面那个
都能生效
++a是先算++里面的,a++是后算
Java 包含丰富的关系运算符。要检测相等性,可以使用两个等号 = =
例如,
3 = 7 的值为 false。
另外可以使用!= 检测不相等。
例如
3 != 7 的值为 true。
最后, 还有经常使用的 < (小于、) > (大于) 、= (大于等于)运算符。
Java 沿用了 C++ 的做法,使用 && 表示逻辑“ 与” 运算符,使用丨| 表示逻辑“ 或” 运算 符。
从 != 运算符可以想到,感叹号!就是逻辑非运算符。&& 和丨| 运算符是按照“ 短路” 方 式来求值的: 如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。
如 果用 && 运算符合并两个表达式,
expressioni1&& expression2
而且已经计算得到第一个表达式的真值为 false, 那么结果就不可能为 true。
因此, 第二个表 达式就不必计算了。可以利用这一点来避免错误。
例如, 在下面的表达式中:
x != 0 M 1 / x > x + y // no division by 0
如果 x 等于 0, 那么第二部分就不会计算。因此,如果 X 为 0, 也就不会计算 1 / x , 除 以 0 的错误就不会出现。
类似地, 如果第一个表达式为 true,
expressioni1&& expression2 的值就自动为 true, 而无需 计算第二个表达式。
最后一点,Java 支持三元操作符 ?:,这个操作符有时很有用。如果条件为 true, 下面的表达式 condition ? expression1 : expression2
就为第一个表达式的值,否则计算为第二个表达式的值。
例如, x < y ? x : y
会返回 x 和 y 中较小的一个。