Java基础

Java基础

标识符

image

Java全部的组成部分都须要名字。类名、变量名以及方法名都被称为标识符。javascript

  • 全部的标识符都应该以字母(A-Z或者a-z),美圆符号($)、下划线(_)开始

image

  • 首字符以后能够是字母(A-Z或者a-z),美圆符号($)、下划线(_)或数字的任何字符组合

image

  • 不能使用关键字做为变量名或方法名java

  • 标识符是大小写敏感的数组

image

  • 合法标识符举例:fuck、$abcd、_abcd、__1_abcdide

  • 非法标识符举例:123abc、-abc、#abc.net

数据类型

强类型语言3d

  • 要求变量的使用要严格符合规定,全部变量都必须先定义后才能使用(强类型语言包括Java、.net 、Python、C++等语言)

弱类型语言code

  • 弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量能够根据环境变化自动进行转换,不须要通过显性强制转换(弱类型语言包括vb 、PHP、javascript等语言)

Java的数据类型分为两大类对象

基本数据类型

基本数据类型只有8种,可按照以下分类
①整数类型:long、int、short、byte
②浮点类型:float、double
③字符类型:char
④布尔类型:booleanblog

No. 数据类型 大小/位 可表示数据范围 默认值
1 byte(字节型) 8 -128~127 0
2 short(短整型) 16 -32768~32767 0
3 int(整型) 32 -2147483648~2147483647 0
4 long(长整型) 64 -9223372036854775808~9223372036854775807 0
5 float(单精度) 32 -3.4E38~3.4E38 0.0
6 double(双精度) 64 -1.7E308~1.7E308 0.0
7 char(字符) 16 0~255 '\u0000'
8 boolean(布尔) - true或false false

引用数据类型

引用数据类型很是多,大体包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型接口

什么是字节

  • 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数
  • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
  • 1B (byte,字节)= 8bit(位)
  • 字符:是指计算机中使用的字母、数字、字和符号

类型转换

因为Java是强类型语言,因此要进行某些运算的时候,须要用到类型转换

image

1.低转高的数据类型,能够自动转换

例:

public static void main(String[] args) {
        short i = 128;
        int j  = i;
        System.out.println(j);//输出128
    }

2.若是由高的数据类型转换到低的数据类型的话,则须要强制转换

例:

public static void main(String[] args) {
        long a = 12800;
        int b  = (int)a;
        System.out.println(b);//输出12800
    }

注意点:

1.不能对布尔值进行转换

2.不能把对象类型转换为不相干的类型

3.把高容量转换到低容量的数据类型时,须要强制转换

4.转换的时候可能存在内存溢出,或者精度缺失的问题

例:

public static void main(String[] args) {
        //操做比较大的数时,要注意溢出问题
        //JDK7新特性,数字能够用下划线进行分割
        int money = 10_0000_0000;
        int year = 20;
        int total =  money*year;
        System.out.println(total);//输出-1474836480,是因为计算的时候溢出了
    
        long total2 = money*year;
        System.out.println(total2);//也是输出-1474836480,由于转换以前就已经溢出
    
        long tatal3 = money*((long)year);//正确写法应该是先把一个数转换为long,再进行计算
        System.out.println(tatal3);//输出20000000000
    }

变量、常量、做用域

变量

Java变量是程序中最基本的存储单元,其要素包括变量类型变量名做用域

type varName = value 
//数据类型 变量名 = 值; 也能够用逗号隔开来声明多个变量

注意事项:

  • 每一个变量都有类型,类型能够是基本类型,也能够是引用类型。
  • 变量名必须是合法的标识符。
  • 变量声明是一条完整的语句,所以每个声明都必须以分号结束
public static void main(String[] args) {
	int a=1,b=2,c=3;//为了程序可读性,不建议一行建立多个变量
    String name = "张三";
    int age = 47;
    char sex = '男';
}

变量做用域

变量是有做用范围(Scope)的,也即做用域。一旦超出变量的做用域,就没法再使用这个变量。在程序中,变量必定会被定义在某一对大括号中,该大括号所包含的代码区即是这个变量的做用域。

1.局部变量

在一个方法或方法内代码块中定义的变量称为局部变量,局部变量在方法或代码块被执行时建立,在方法或代码块结束时被销毁。局部变量在进行取值前必须被初始化,不然会编译错误。

image

2.实例变量

public class Test {
    //实例变量:从属于对象,能够不初始化值,若是不自行初始化值,则会是默认值
    String name;
    int age;
    boolean flag;
    double a;
    float b;

    public static void main(String[] args) {
        Test test = new Test();
        System.out.println(test.name);//输出null
        System.out.println(test.age);//输出0
        System.out.println(test.flag);//输出false
        System.out.println(test.a);//输出0.0
        System.out.println(test.b);//输出0.0
        //布尔值的默认值是false,基本类型的默认值是0或0.0,其他的默认值都是null
    }
}

3.类变量

类变量是随着类的加载而加载的,和实例变量的区别是类变量不须要实例化

public class Test {
    static int age = 18;//类变量

    public static void main(String[] args) {
        System.out.println(age);//输出18,不须要实例化能够直接输出
    }
}

常量

  • 常量(Constant):初始化(initialize)后不能再改变值!不会变更的值。
  • 所谓常量能够理解成一种特殊的变量,它的值被设定后,在程序运行过程当中不容许被改变。
  • 常量名通常使用大写字符。
final 常量名 = 值;
final double PI = 3.14;
public class Test {

    static final double PI = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);//正常可输出3.14
        
        final int A = 15000;
        A = 16000;//会报错,由于A已经被final定义为常量,因此不容许改变
    }
}

变量的命名规范

  • 全部变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:myAge
  • 局部变量:首字母小写和驼峰原则:myName
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则: Man,GoodMan
  • 方法名:首字母小写和驼峰原则: run(), runRun()
//类名
public class GoodMan {
    //常量名
    static final double MAX_VALUE = 30000;
    //类成员变量
    int myAge = 17;
    public static void main(String[] args) {
        //局部变量
        String myName = "张三";
    }
    //方法名
    public void runRun(){}
}

运算符

Java语言支持以下运算符:

  • 算术运算符:+,-,*,/,%,++,--
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符:? :
  • 扩展运算符:+=,-=,*=,/=

基本运算符的注意点

例1:使用算术运算符时要考虑数据类型的转换,以避免出现精度缺失

public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a+b);//输出30
        System.out.println(a-b);//输出-10
        System.out.println(a*b);//输出200
        System.out.println(a/b);//输出0,正确得数应该是0.5,因为int是整数,因此小数点后的数被去掉了
        System.out.println(a/(double)b);//输出0.5,a除以b能够进行强转来得出正确得数
    }

例2:数据类型的隐式转换

public static void main(String[] args) {
        long a = 123456789123L;
        int b = 123;
        short c = 10;
        byte d = 8;
        System.out.println(a+b+c+d);//输出是long类型
        System.out.println(b+c+d);//输出是int类型
        System.out.println(c+d);//输出是int类型
        //在整数类型中,若是相加数有long类型,则会转换为long
        //在整数类型中,没有long类型,则全部非int型会转换为int类型
    }

image

自增自减运算符

例:++a和a++的区别(自减同理)

public static void main(String[] args) {
        int a = 3;
        System.out.println(a);//输出3,此时a并未自增
        int b = a++;//a++是把a=3赋值给了b再进行自增
        int c = ++a;//++a是自增以后再赋值给了c,因为前面int b = a++的时候,a赋值以后已经自增了,因此等于5
        System.out.println(a);//输出5
        System.out.println(b);//输出3
        System.out.println(c);//输出5
    }

逻辑运算符

例:逻辑运算符的与或非

public static void main(String[] args) {
        //逻辑运算符: 与&&  或||  非!
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:"+(a&&b));//输出为false,两个变量为真,结果才为true
        System.out.println("a || b:"+(a||b));//输出为true,只要一个变量为真,结果为true
        System.out.println("a && b:"+!(a&&b));//输出true,若是a&&b的结果为真,加上非则为假,反之亦然
    }

例:短路运算,&&具备短路功能,即第一个表达式为false则不会再计算第二表达式

public static void main(String[] args) {
        //短路运算:&&具备短路功能,即若是第一个表达式为false则不会再计算第二表达式
        int a = 5;
        boolean b = (a < 4)&&(++a < 4);
        System.out.println(b);//输出false
        System.out.println(a);//输出5,因而可知第二表达式的++a并无自增

        //可是单个&也能够看成逻辑运算符,但它则不会形成短路运算
        int c = 5;
        boolean d = (c < 4)&(++c < 4);
        System.out.println(c);//输出6
    }

位运算符

与&,或|,非~,异或^

位运算符主要针对二进制,逢二进一
A = 0011 1100
B = 0000 1101
-------------------------------------
A&B则是A与B的每位进行比较,能够把0看成false,1看成true进行比较,两个数的位都为1则为1
其中有一个0则为0
A&B = 0000 1100
-------------------------------------
A|B则是若是两位比较都是0则为0,不然为1
A|B = 0011 1101
-------------------------------------
A^B = 0011 0001 异或是比较两个操做数的位中,相同的数则结果为0,不一样则结果为1
-------------------------------------
~B = 1111 0010  取反则是每位中0则为1,1则为0

<<左移 >>右移

public static void main(String[] args) {
    /* 二进制换算
        0 = 0000 0000
        1 = 0000 0001
        2 = 0000 0010
        3 = 0000 0011
        4 = 0000 0100
        8 = 0000 1000
       16 = 0001 0000
     */
    //左移<<至关于*2,右移>>至关于/2
    System.out.println(2<<3);//输出16,在二进制中则是把1左移3位
}

扩展运算符

例:a+=b便是a=a+b,a-=b则是a=a-b,以此类推

public static void main(String[] args) {
        int a = 10;
        int b = 20;
        a+=b;//a+=b至关于a=a+b,-=,*=,/=亦是如此
        System.out.println(a);//输出30
}

条件运算符 : ?

例: x ? y : n 的意思是若是x的结果为true,则结果为左边y,不然结果为右边n

public static void main(String[] args) {
        int score = 80;
        //若是score大于60的结果是true则返回冒号左边的值,不然返回右边,赋值给type
        String type = score > 60 ? "合格" : "不合格";
        System.out.println(type);//输出合格
    }
相关文章
相关标签/搜索