JAVA
java:半解释半编译
解释:浏览器可以直接运行JS,不需要编译
编译:java,scala,hello
java市程序员写的,以10进制java文件写的,计算机只认识二进制。
java历史:sun公司发明了java
java:C和C++
计算机:软件加硬件
内存:物理内存,虚拟内存
操作系统:
- 打开指令操作台,win+r,输入cmd
- 输入盘符,进入E盘 e:
- 回到上一层: cd..
- 进入指定目录: cd a
- dir指令查看当前目录下文件夹信息: dir
- 创建一个空文件: copy nul a.txt
- 向文件内写入内容: echo 1234>a.txt
- 复制文件: copy a.txt b.txt
- 删除文件:del a.txt 不走回收站
存储单位:
- 一个bit=一位
- 1byte=8bit
- 1kb=1024b
- 1mb=1024k
- 1gb=1024m
- 1tb=1024g
- 1pb=1024b
二进制的加减法计算:
- 10010011
- 10101001
- 对应相加
- 100111100
- 00000001
- 10000001
- 用补码计算
Java三个版本:
- JavaSE:桌面应用程序
- JavaEE:企业级应用,主要学习
- JavaME:手机端
Java特点:
- 面向对象
- 跨平台:操作系统,Java写的软件可以在任意操作系统运行
- 解释执行,计算机执行的.class,解释执行.class
- 多线程,多个任务同时进行
- 分布式
- 健壮性:强数据类型的语言,异常处理,垃圾回收机制
- 安全性:插件设置一个去防范机制
Java环境搭建
- JAVA_HOME:jdk路径(C:/P/java/jdk-11.0.15)
- 找到原来的Path,把bin目录复制进去(或%JAVA_HOME / bin%)
JAVA常用指令:
- java
- javac
- javap
- java -version
- java -jar
创建一个java文件
public class Hello{ public static void main(String[] args) { System.out.println( "Hello" ); } }
通过cmd指令找到java文件,需要编译,使用javac hello.java,生成了一个hello.class,是计算机去解释执行的文件,说明hello.class是一个二进制文件,hello.class叫字节码文件
执行hello.java,java hello
类:Java开发中最小的单位
命名规则(标识符):字母数字下划线$,其中不能以数字开头,关键字不能命名
关键字:官方的解释,有独一无二的作用,都是小写的,50个左右,2个保留字
java注释:
- //单行注释
- /*多行注释*/
- /**
- *文档注释
- */
三种注释都可以调试代码
主方法(main):是程序的入口
Java数据类型:
- 基本数据类型(四类八种)
- 引用数据类型
基本数据类型:
整型:
byte:字节型 -128~127 一个字节=8位
short:短整型 -2^15~2^15-1 二个字节=16位
int:-2^31~2^31-1 四个字节=32位
long:长整型-2^63~2^63-1 八个字节=64位(使用长整型需要在值得后面加L或l)
浮点型
float:单精度浮点型 四个字节=32位 (使用长整型需要在值得后面加F或f)
double:双精度浮点型 八个字节=64位
字符型
char:字符型 二个字节=16位 0~255(字符型需要加单引号,引号中只能放一个)
布尔型
boolean,true,false 一个字节=8位
变量的命名:字母数字下划线$,其中不能以数字开头,关键字不能命名
小数默认double,整数默认int
精度:
整形:4种整型,精度和位数挂钩,位数越大,精度越高
浮点型:double精度比float要高
低精度与高精度运算,得到的是高精度
基本类型转换:
1.自动类型转换:低精度->高精度
2.强制类型转换:高精度->低精度
复制运算符:
- +
- =
- -=
- *=
- /=
- %=
- a+=1 -> a=a+1
比较运算符:
- <
- >
- >=
- <=
- ==
- !=
逻辑运算符:
与 :&& & 只有所有条件都为true,整体才为true,否则为false,一假则假,短路效应
a&1 = 0 偶数
a&1 = 1 奇数
或 :一真则真,短路效应
非 :取反 ~
异或:^
void swap(int x , int y)
{
x ^= y;
y ^= x;
x ^= y;
}
>> << >>>(无符号右移)
位运算运用:
- 绝对值:
int abs( int x ) { int y ; y = x >> 31 ; return (x^y)-y ; //or: (x+y)^y }
- 取模运算转化成位运算 (在不产生溢出的情况下)
a % (2^n) 等价于 a & (2^n – 1)
- 乘法运算转化成位运算 (在不产生溢出的情况下)
a * (2^n) 等价于 a<< n
- 除法运算转化成位运算 (在不产生溢出的情况下)
a / (2^n) 等价于 a>> n
例: 12/8 == 12>>3
- a % 2 等价于 a & 1 ( a & log2(2))
a % 4 等价于 a & 2 ( a & log2(4))
…..
a % 32 等价于 a & 5
- if (x == a) x= b;
else x= a;
等价于 x= a ^ b ^ x;
- x 的 相反数 表示为 (~x+1)
- 绝对值
int AbsInt(int n) { int i = n >> 31; // if n >= 0, i = 0; else i = 0xffffffff = -1 n = n ^ i; // if i = 0, n = n; else i = 0xffffffff, n = ~n return n - i; // if i = 0, n - i = n; else i = -1, n - i = n + 1 }
- 浮点数的绝对值
float AbsFloat(float flt) { *(size_t*)&flt = (*(size_t*)&flt & 0x7fffffff); return flt; } double AbsDouble(double dbl) { *((size_t*)&dbl + 1) = (*((size_t*)&dbl + 1) & 0x7fffffff); return dbl; }
三目运算符:a>b?1:2
char的特殊性:
映射表ASCII码,每一个字符在计算机都是以ASCII码保存
char是16位,可以自动转成int,long,float,double
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/274196.html