java基础
java是编译型还是解释型
编译型是什么
在程序运行之前,通过编译器将源程序编译成机器码(可运行的二进制代码),以后执行这个程序时,就不用再进行编译了。就比如直接将一本书全部翻译为英文然后在阅读,这也就执行速度快、效率高;依靠编译器、跨平台性差些
解释型是什么
解释型语言的源代码不是直接翻译成机器码,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。在运行的时候才将源程序翻译成机器码,翻译一句,然后执行一句,直至结束。
但是缺点就是每次运行的时候都要解释一遍,性能上不如编译型语言。
混合型语言
Java即是编译型的,也是解释型语言,总的来说Java更接近解释型语言,因为Java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的。
注释
-
单行注释 // (双斜杠)
-
多行注释 /* */
-
文档注释 JavaDoc /** */
/** * @author qinpan * 这就是你文档注释 */
标识符和关键字
标识符
顾名思义就是一个标记并且可以识别出来是什么
标识符的使用规则:
- 所有的标识符都应该以字母(A-Z或者a-z)、美元符 ($)、或者下划线(_)开始
- 首字符之后可以是字母、美元符、下划线或者数字的任何字符组合
- 特别注意不可以使用关键字作为变量名或者方法名
- 标识符是大小写敏感的
- 合法例子:age、_1_value
- 非法标识符例子:123abc 、#ABC
- 可以使用中文命名,但是一般不建议,也不建议用拼音,要看见标识符就知道是干啥的更好,就是要顾名思义即可最佳
关键字
- 48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
- 2个保留字(现在没用以后可能用到作为关键字):goto、const。
- 3个特殊直接量:true、false、null。
数据类型
首先要知道什么是强类型语言,就是要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用,弱类型就与之相反
java的数据类型也就分为两类
-
基本数据类型(8个)
- 整数类型:byte ,short, int ,long
- 浮点类型: float, double
- 字符类型:char
- boolean类型:值只有true和false两个
-
引用类型
- 类
- 接口
- 数组
- 等等.........不是基本数据类型的都是引用类型
//Java中的8大数据类型的
//基本数据类型
//整数类型
//int 最常用的
int num1=10 ;
byte num2=20; //只有一个字节超出后就会报错的
short num3=30;
long num4 =30L; //注意long 后面加上L 用来区分是长型的
// 浮点类型
float a= 89.3f; //注意float后面加上f 用来区分,否则报错
double b=90.2;
// 字符类型
char x='A';
//布尔类型
boolean boo= true;
//字符串类型 String 不是关键字 是类
String name ="张三";
//整数的扩展 进制 二进制 0b 十进制 八进制 0 16进制 0x
int sum1=0b111;
int sum2=10;
int sum3=010 ; //8进制
int sum4=0x10; //16进制
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum3);
System.out.println(sum4);
System.out.println("==============");
//浮点数扩展
// 最好避免完全是用浮点数做比较
float f1=0.1f;
double d1=0.1;
System.out.println(f1==d1); //false 应为浮点数float是离散 有限的 舍入误差
类型转换
主要由于java是强类型语言,所以子啊进行一些运算的时候,需要用到数据类型转换
由低到高的顺序 低---------------> 高
byte ,short ,char ---> int ----->long -------->float------>double
在前面添加小括号可以进行强制数据转换,由高转到底是强转换
// 强制类型转换 有高转换到低
// 弱类型转换 由低转换到高
/* 注意点
1、不能对布尔值进行转换
2、不能把对象类型转换为不相干的类型
3、在把高容量转换为低容量的时候,强制转换
4、转换的时候可能出现内存溢出。或者精度问题
*/
System.out.println((int)15.8);
System.out.println((float)90);
// 操作比较大的数的时候要注意溢出问题
变量、作用域
变量就是可以变化的量
Java是一种强类型语言,每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
- 注意事项:::
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
作用域,在java 种主要分为类变量、实例变量、局部变量
public class 变量常量作用域 {
static double salary=8900; //类变量 ,在后面的程序中可以直接使用
double age=10; //实例变量,需要创建实例对象才可以通过实例来进行使用
static final double name=900; // 类常量
//前面的关键字顺序没得关系随便写
public static void main(String[] args) {
//局部变量,就是只可以在类里面使用的
int sum=10; //必须赋值初始化,不然报错
System.out.println(sum);
System.out.println(salary);
System.out.println(salary);
变量常量作用域 s1=new 变量常量作用域(); //创建实例对象使用实例变量
System.out.println(s1.age);
}
public void sos(){
// System.out.println(sum); 这里就不可以用到局部变量sum
}
}
运算符
java主要分为六大:算术运算符、赋值运算符、比较运算符、逻辑运算符、条件(三目)运算符、位运算符
一、算术运算符:+(加),-(减),*(乘),/(除),%(求余),++(自增),--(自减)
特别注意:有 long 类型的相加那么结果就是long 类型的
否则就是int类型
自增自减,主要就是要注意增加或者减少的时机
++、-- 在前就先加或者减了在执行下一步,在后就相反执行完这句操作后再进行加减操作
二、赋值运算符:=(等于),+=(自加一次等于),-=(自减一次等于),*=(自乘一次等于),/=(自除一次等于),+(字符串连接符)
int a1=10;
int b1=20;
a1+=b1; //就相当于 a1=a1+b1
System.out.println(a1); // 30
String name1="zhangSan";
String book="Math";
System.out.println(name1+book); //zhangSanMath +号可以连接字符串
System.out.println(1+3+book); //4Math
// 如果字符串在后面,前面是可以计算的直接先算前面的数,然后在拼接字符串
System.out.println(name1+3+book); //zhangSan3Math
// 如果字符串在前面 在加上数字,那么就会直接字符串拼接
三、比较运算符:>(大于),<(小于),>=(大于等于),<=(小于等于),==(比较等于),!=(不等于)
int a2=10;
int b2=20;
System.out.println(a2>b2); // false
返回结果只有:true或者false
四、逻辑运算符:&(按位与),&&(短路与),|(按位或),||(短路或),!(非,即取反)
//逻辑运算符
// 与 and 或 or 非 取反
boolean a =true;
boolean b=false;
System.out.println(b && a); //false
// 逻辑与,同时为真结果才是true
System.out.println(b || a); //true
// 逻辑或,一个变量为真,结果才为true
System.out.println( !a); //false
// 如果是真就变为假,假的就变为真,就是和原始值相反
//短路运算 :就是逻辑与,前面一半是假的,那么后面一半就不会执行,直接返回值为false
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d); //false
System.out.println(c);//5 c没有加1所以后面部分就没有执行的
五、条件(三目、三元)运算符:? :
// x ? y :z x 为true 就返回y ,否则结果就为z
int score=50;
String type= score<60 ? "不及格" : "及格";
System.out.println(type); // 不及格
六、位运算符(都是基于二进制来计算) :&(按位与),|(按位或),^(异或运算),<<(左移运算符),>>(右移运算符),>>>(无符号运算符),~(非、取反运算符)
位运算符要求了解就好
须知:整数默认为int型