编译型:一次性全部编译完 C\C++
解释型:编译一部分读取一部分 Java\Js边编译边执行
IDE 集成开发环境
Java是强类型语言,区分大小写
尽量用单词规范命名
要求变量的使用严格符合规定,所有变量都必须先定义后才能使用
不用严格按照规定
基本类型
引用类型
//整数
byte num1=10;
short num2=100;
int num3=1000;
long num4=10L; //long类型后一定要加上L,用于区分是long类型
//小数:浮点数
float num5=50.2F; //float类型后一定要加上F
double num6=3.1231231;
//字符
char ca='a'; //只能是一个字符
//字符串,String不是关键字,是一个类
String name="杨卓";
//布尔值
boolean fr=true;
boolean ft=false;
String 除了基本数据类型之外的都是引用数据类型
位:计算机内部数据存储的最小单位
字节:计算机中数据处理的基本单位
1个字节等于8位
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int num1=10; //十进制
int num2=0b10; //二进制
int num3=010; //八进制
int num4=0x10; //十六进制
System.out.println(num1); 10
System.out.println(num2); 2
System.out.println(num3); 8
System.out.println(num4); 16
//浮点数拓展
//BigDecimal 数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全避免使用浮点型进行比较
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);//false
System.out.println(f);//0.1
System.out.println(d);//0.1
float f1=22222f;
float f2=f1+1;
System.out.println(f1==f2);//false
System.out.println(f1);//22222.0
System.out.println(f2);//22223.0
//字符拓展
char c1='a';
char c2='中';
System.out.println(c1);// a
System.out.println((int) c1);// 97
System.out.println(c2);// 中
System.out.println((int) c2);// 20013
//所有的字符本质上还是数字
//Unicode表 (97=a 65=A) 2字节 0-65536
//底层原理 U0000 UFFFF
char c3='\u0061';
System.out.println(c3);//a
//转义字符
// \t 制表符
// \n 换行
System.out.println("Hello\nWorld");//换行输出了Hello和World
//布尔值扩展
boolean flag=true;
if (flag == true) {
//新手
}
if (flag){
//代码简洁
}
优先级:低------------------------------高
byte—>short—>char—>int—>long—>float—>double
优先级高的向优先级低的转化时 需要强制类型转换(高-----低)
//强制转换 (类型)变量名 由高----低
int i=128;
byte b=(byte) i; //-127----127
System.out.println(i);//128
System.out.println(b);//-128 溢出
//自动转换 不需要做任何变化 由低----高
double d=i;
/*
* 注意点:
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型
* 3.在把高容量转换到低容量的时候,强制转换
* 4.转换的时候可能存在内存溢出,或者精度问题
* */
System.out.println((int)21.1f);//21
System.out.println((int)-23.22f);//-23
//char和int的转换
char c='a';
int i1=c+1; //低-----高 自动转换
System.out.println(i1);//98
System.out.println((char)i1);//b
//操作比较大的数,注意移除问题
//JDK新特性,数字之间可以用下划线分割
int money=10_0000_0000;
System.out.println(money);//1000000000
int years=20;
int total=money*years;
System.out.println(total);//-1474836480 数据溢出了
long total1=money*years;
System.out.println(total1);//-1474836480 相乘后默认是int,转换之前就已经溢出了
long total2=(long) money*years;
System.out.println(total2);//20000000000 先把一个数转换成long,相乘后的结果也是long型
变量:可以变化的量
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
类变量: static 修饰的变量为类变量,也叫静态变量
实例变量: 实例化的变量为实例变量、
局部变量: 在方法体内声明的变量并且必须初始化
//实例变量:从属于对象:
String name;
int age;
//类变量 static
static double salary=2500;
//main 方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i=20;
System.out.println(i);//20
作用域 z= new 作用域();
//实例变量如果没有初始化,则这个类型会为默认值
//整型 0 布尔值 false 除了基本类型其他的是null
System.out.println(z.age);//0
System.out.println(z.name);//null
//类变量可以直接输出salary
System.out.println(salary);//2500.0
}
public void add(){
}
初始化之后不能改变值,不会变动的值 final修饰
//常量 final
//修饰符不存在先后顺序
public final static int A=10;
/*变量的命名规范
所有的命名都必须简单易懂
* 类成员变量:首字母小写 驼峰命名法 lastName
* 局部变量:首字母小写 驼峰
* 常量:大写字母和下划线 PI
* 类名:首字母大写和驼峰 Person
* 方法名:首字母小写 驼峰 run() getRead()
* 包名:小写 stu
* */
//二元运算符号 Ctrl+D 复制当前行到下一行
int a=10;
int b=20;
int c=30;
int d=40;
System.out.println(a+b);//30
System.out.println(a-c);//-20
System.out.println(a*d);//400
System.out.println(a/(double)b);//0.5 小数的时候注意作用范围
//关系运算符 结果为布尔值
int e=10;
int f=22;
System.out.println(e==f);
System.out.println(e>f);
System.out.println(e<f);
System.out.println(e!=f);
System.out.println(f%e);//模运算
//++自增 --自减
//a++ 先赋值再计算 ++a先计算再赋值
int a1=2;
int b1=a1++;//先赋值 再a1++ a1=3
int c1=++a1;//先a1++ 再赋值 c1=a1=4
System.out.println(a1);//4
System.out.println(b1);//2
System.out.println(c1);//4
//幂运算 Math类
double pow= Math.pow(2,3);//2的3次方
double sqrt=Math.sqrt(4);
System.out.println(pow);//8.0
System.out.println(sqrt);//2.0
//逻辑运算符 与&& 或|| 非!
/*
逻辑与运算&& 同真即真 一假即假 存在短路现象 前面判断的为假的话 后面的不会计算
逻辑或运算|| 同假即假 一真即真
逻辑非运算! 在结果的基础上取相反的结果
*/
boolean ya=true;
boolean yb=false;
System.out.println(ya&&yb);//false
System.out.println(ya||yb);//true
System.out.println(!(ya&&yb));//true
System.out.println(!(ya||yb));//false
//短路运算
int cd=3;
boolean bl=(cd<2)&&(cd++<2);
System.out.println(bl);//false
System.out.println(cd);//3 后面的语音并没有执行,出现了短路现象
//位运算 &与 |或 ^异或 (相同则为0,不相同则为1) ~非
/*
A=0010 1101
B=0111 1000
A&B=0010 1000
A|B=0111 1101
A^B=0101 0101
~B=1000 0111
>>右移 /2 除以2
<<左移 *2 乘以2
快速计算16
2*8=16 2*2*2*2
计算机识别二进制码很快,所有通过左移可以快速计算 效率极高
0000 0000 ----0
0000 0001 ----1
* 0000 0010 ----2
0000 0011 ----3
0000 0100 ----4
0000 1000 ----8
* 0001 0000 ----16
可以发现数字2中 1的位置向左移动3位变成了 16
*/
System.out.println(2<<3);//16
System.out.println(8>>2);//2
//扩展运算符 += -=
int ab=10;
int ac=20;
ab+=ac;//ab=ab+ac
System.out.println(ab);//ab=30
ab-=ac;//ab=ab+ac
System.out.println(ab);//ab=10
//字符串连接 + String
/*字符串连接 +两侧只要出现了String类型 则就是字符串的连接
但是如果String类型出现在+的右侧(之后),前面的操作依然会运算 -------①
如果String类型出现在+的左侧(之前),则后面的操作不会计算,直接进行字符串的连接-----②
*/
System.out.println(ab+ac);//值 30
System.out.println(ab+ac+"");//前面运算后再连接 30-----①
System.out.println(""+ab+ac);//字符串连接 1020 -----②
// System.out.println('a'+ab);//97+10=107 自动将a转换成了97
//三元运算符 x?y:z------> if(x==true) return y else z
int k=3;
int l=4;
int qu=k>l?k:l;//如果k>l则为k,否则为l
System.out.println(qu);//4=l
//优先级 ()
一般公司域名倒置作为包名 防止命名空间重复
域名: www.baidu.com 包名:com.baidu.xxx
导入包: import package1[.package2].(className|*);
javadoc命令是用来生成自己API文档
命令行--------javadoc -encoding UTF-8 -charset UTF-8 Operator.java 防止出现中文乱码
idea生成Javadoc文档