java基础

107 阅读7分钟

java基础

java是编译型还是解释型

编译型是什么

在程序运行之前,通过编译器将源程序编译成机器码(可运行的二进制代码),以后执行这个程序时,就不用再进行编译了。就比如直接将一本书全部翻译为英文然后在阅读,这也就执行速度快、效率高;依靠编译器、跨平台性差些

解释型是什么

    解释型语言的源代码不是直接翻译成机器码,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。在运行的时候才将源程序翻译成机器码,翻译一句,然后执行一句,直至结束。

但是缺点就是每次运行的时候都要解释一遍,性能上不如编译型语言。

混合型语言

Java即是编译型的,也是解释型语言,总的来说Java更接近解释型语言,因为Java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的。

注释

  1. 单行注释 // (双斜杠)

  2. 多行注释 /* */

  3. 文档注释 JavaDoc /** */

    /**
     * @author qinpan
     *  这就是你文档注释
     */
    

标识符和关键字

标识符

顾名思义就是一个标记并且可以识别出来是什么

标识符的使用规则:

  1. 所有的标识符都应该以字母(A-Z或者a-z)、美元符 ($)、或者下划线(_)开始
  2. 首字符之后可以是字母、美元符、下划线或者数字的任何字符组合
  3. 特别注意不可以使用关键字作为变量名或者方法名
  4. 标识符是大小写敏感的
  5. 合法例子:age、_1_value
  6. 非法标识符例子:123abc 、#ABC
  7. 可以使用中文命名,但是一般不建议,也不建议用拼音,要看见标识符就知道是干啥的更好,就是要顾名思义即可最佳

关键字

  1. 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. 2个保留字(现在没用以后可能用到作为关键字):goto、const。
  3. 3个特殊直接量:true、false、null。

数据类型

首先要知道什么是强类型语言,就是要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用,弱类型就与之相反

java的数据类型也就分为两类

  1. 基本数据类型(8个)

    1. 整数类型:byte ,short, int ,long
    2. 浮点类型: float, double
    3. 字符类型:char
    4. boolean类型:值只有true和false两个
  2. 引用类型

    1. 接口
    2. 数组
    3. 等等.........不是基本数据类型的都是引用类型
//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主要分为六大:算术运算符、赋值运算符、比较运算符、逻辑运算符、条件(三目)运算符、位运算符

一、算术运算符:+(加),-(减),*(乘),/(除),%(求余),++(自增),--(自减)

截图.png

截1图.png

特别注意:有 long 类型的相加那么结果就是long 类型的

否则就是int类型

自增自减,主要就是要注意增加或者减少的时机

++、-- 在前就先加或者减了在执行下一步,在后就相反执行完这句操作后再进行加减操作

截11图.png

二、赋值运算符:=(等于),+=(自加一次等于),-=(自减一次等于),*=(自乘一次等于),/=(自除一次等于),+(字符串连接符)

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);   // 不及格

六、位运算符(都是基于二进制来计算) :&(按位与),|(按位或),^(异或运算),<<(左移运算符),>>(右移运算符),>>>(无符号运算符),~(非、取反运算符)

位运算1.png

位运算2.png 位运算符要求了解就好

须知:整数默认为int型