java基础_01_数据类型和变量


 

1.注释
  //单行注释
  
  /*多行注释*/
  
  /**javaDoc:文档注释
  /**
 * @Description hello 
 */
 


 /**
 *                             _ooOoo_
 *                            o8888888o
 *                            88" . "88
 *                            (| -_- |)
 *                             O\ = /O
 *                         ____/`---'\____
 *                       .   ' \\| |// `.
 *                        / \\||| : |||// \
 *                      / _||||| -:- |||||- \
 *                        | | \\\ - /// | |
 *                      | \_| ''\---/'' | |
 *                       \ .-\__ `-` ___/-. /
 *                    ___`. .' /--.--\ `. . __
 *                 ."" '< `.___\_<|>_/___.' >'"".
 *                | | : `- \`.;`\ _ /`;.`/ - ` : | |
 *                  \ \ `-. \_ __\ /__ _/ .-` / /
 *          ======`-.____`-.___\_____/___.-`____.-'======
 *                             `=---='
 * 
 *                   佛祖保佑             永无BUG
 *           .............................................
 */
 
 

 

2.标识符

 

 

3.数据类型

 

public class helloworld{
    public static void main(String[] args) {
        String a = "hello";
        int mun = 10;
        System.out.print(a);
        System.out.print(mun);

    }
}

 

 

public class helloworld{
    public static void main(String[] args) {
       //八大基础数据类型

        //整数
        int num1 = 10; //最常用
        byte num2 = 20;
        short num3 = 30;
        long num4 = 30L; // Long类型要在数字后面加L

        //小数:浮点数
        float num5 = 50.1F;// float类型要在数字后面加F
        double num6 = 3.141592654;

        //字符
        char name = 'A';
        //字符串,String 不是关键字,是类 // String name = "xiaodi";

        //布尔值:是非
        boolean flag = true;
        boolean flag1 = false;

    }
}

 

public class helloworld{
    public static void main(String[] args) {
      //整数拓展: 进制 二进制0b  十进制 八进制0 十六进制0x
        int i1 = 10;
        int i2 = 010; //八进制0
        int i3 = 0x10; //十六进制0x 0~9 A~F
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
    }
}

 

public class helloworld {
    public static void main(String[] args) {
        //浮点数拓展
        //银行业务数字,不用浮点的float和double表示,一般用:BigDecimal 数学工具类

        //场景1
        float f = 0.1f;
        double d = 1.0/10;
        //广义理解以上两个变量,算出来都是0.1,但是代码中,是不等于的
        System.out.println(f==d); //输出结果为:false
        System.out.println(f); //0.1
        System.out.println(d);//0.1

        //场景2
        float d1 = 32323232323232f;
        float d2 = d1+1;
        System.out.println(d1==d2);//广义理解以上两个变量不一样,输出结果预期是false,实际运行结果为true
        // 因为浮点数取数是有限的,结果只是接近,大约

    }
}
public class helloworld {
    public static void main(String[] args) {

        //字符拓展
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1); //实际输出结果 a
        System.out.println(c2); //实际输出结果 中
        System.out.println((int)c1);//强制转换可以把字符转换为数字: 实际输出结果 97
        System.out.println((int)c2); //强制转换为数字后 实际输出结果 20013
        //以上4个输出代表:所有的字符本质上还是数字,通过Unicode编码 来编码的。
        //有对应的编码:类似以上:a=97 中=20013 输出时会去查Unicode编码的表
        //Unicode编码的表示方式 U0000 UFFFF

        char c3 = '\u0061'; //\u 转义
        System.out.println(c3); //输出结果为:a
        //C3的输出结果,充分说明了
        //Unicode(统一码)其实相当于一本很厚的字典,里面储存了世界上所有语言的字符,使用Unicode码点唯一地对应一个字符。


        //2,转义字符
        // \t 制表符(空格)
        // \n 换行
    }
}
public class helloworld {
    public static void main(String[] args) {
        //布尔值扩展
        boolean flag = true;
        if (flag==true){} //新手写法
        if (flag){} //老手写法,默认为真 //精简易读
    }
}

 

 

4.类型转换

 

 

1、其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样
byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)。

2、浮点:float、double
float在储存大型浮点数组的时候可节省内存空间;浮点数的默认类型为double类型;浮点数不能用来表示精确的值,

3、字符类型 char
char类型是一个单一的16位Unicode字符;(2字节)
最小值是’\u0000’(即为0);
最大值是’\uffff’(即为65,535); 2的16次方 -1 (2^16 -1)

 

 

public class helloworld {
    public static void main(String[] args) {
//类型转换
        /**
         * 1,不能对布尔值进行转换
         * 2,不能把对象类型转换为不相关的类型
         * 3,在把高容量转换到低容量的时候需要强制转换,低转高不需要
         * 4,转换的时候可能存在内存溢出,或者精度问题
         */
        //强制转换 格式:(类型)+变量名
        //自动转换 低-高


        //场景一,转换时内存溢出
        int i = 128;
        byte b = (byte)i; //这里如果写成 byte b = i; 会报错,b是byte类型,但是i是int类型。所以强制转换的格式很重要。

        System.out.println(i); //输出结果  128
        System.out.println(b); //输出结果 -128
        //造成以上输出结果的原因是,byte最大数是127,128时,就造成了内存溢出,所以输出结果会是负数


        //场景二:数据高到低需要强制转换, 低到高,可以自动转换
        int i2 = 128;
        double b2 = i2;
        System.out.println(i2); //输出结果  128
        System.out.println(b2); //输出结果  128.0


        //场景三,精度丢失问题。
        System.out.println((int)23.7); //输出结果: 23 丢失了小数点后数据
        System.out.println((int)-45.89F);  //输出结果: -45 丢失了小数点后数据

        //场景四,字符转数字
        char c = 'a';
        int d = c+1; //低转高,自动转换
        System.out.println(c); //输出结果:a
        System.out.println(d); //输出结果:98
        System.out.println((char)d); //输出结果:b 说明在Unicode编码中,98 就是b 编码-1,97就是a

        char c4 = '\u0098';
        System.out.println(c4); //验证一下上面的结果,输出结果为b

    }

}

 

public class helloworld {
    public static void main(String[] args) {

        //操作比较大的数的时候,注意溢出问题


        //场景1:Jdk7新特性数字之间可以下划线_分割,不影响输出结果
        int money = 10_0000_0000;
        System.out.println(money); //输出结果,1000000000

        //场景2:
        int years = 20;
        int total = money*years;
        System.out.println(total); //实际输出结果:-1474836480,期待结果200_0000_0000  这样就内存溢出了

        long total2 = money*years;
        System.out.println(total2); //这样使用long,也不行,因为两个变量是int,就是默认int,在转换之前就已经内存溢出了

        long total3 = money*((long)years);
        System.out.println(total3); //实际输出结果,20000000000,这样写就不会存在内存溢出问题了。
        //PS:int数据范围-2147483648-2147483647  最大21亿,以上变量计算结果为200亿,所以内存溢出;
    }
}

 

5.变量

 

 

public class helloworld {
    public static void main(String[] args) {

        //变量

        //int a,b,c
        // int a=1,b=2,c=3;不建议这么写,要注意程序的可读性
        int a=1;
        int b=2;
        int c=3; //尽量采用这种分行来写  int属于基本类型变量

        String name = "xiaodi"; //String属于引用类型变量
        char X = "xiao";
        double pi = 3.14;

    }
}

 

 

//变量作用域-局部变量
public class helloworld { //helloworld 就是类,类名

    //类里面除了像main的方法,还能定义属性  属性可以理解为就是一个变量

    public static void main(String[] args) { //main方法 默认的主程序方法
        //局部变量:局部变量是在方法或者语句块里边的,
        // 在两个{}之间的,有效期从第一个{开始,到}结束。
        //而且必须声明和初始化值
        //int i;  //而且必须声明和初始化值
        int i=10;  // i这个变量只能在这一个方法里边使用,其他方法不能用。
        System.out.println(i);
    }

    //类里面除了像main的方法,还能写其他方法,比如于下方add方法
    public void add(){

    }
}
//变量作用域-实例变量
public class helloworld {
    //实例变量,不在方法里边,在类里边,从属于对象的,(从属于helloworld这个类)
    String name; //实例变量可以不初始化,直接用
    int age;
    public static void main(String[] args) {
       helloworld  helloworld = new helloworld();
       //变量类型 变量名 = 值(变量就是自己helloworld)
        System.out.println(helloworld.name); //输出结果 null 因为上面没有初始化值,而在实例变量中,如未初始化值,就会变成这个类型的输出默认值
        System.out.println(helloworld.age); //输出结果 0
        // 整数 0 小数0.0 布尔值fales
        // 除了基本类型,其他的都是null 包括String
    }
}
//变量作用域-类变量-static

public class helloworld {
    static double salary = 2500; //只要加了关键字static,就是从属于类的变量,可以直接使用
    public static void main(String[] args) {
        System.out.println(salary);
    }
}

6.常量

 

 

//常量-final
public class helloworld {
    static final double PI = 3.14; //static 和final 位置可以不区分前后 ,他俩都是修饰符,修饰符不存在先后顺序,public也是
    //常量也属于类变量,所以需要加static
    //项目中一些定死的值,就可以用常量,常量定义后,就不能变。静态常量
    public static void main(String[] args) {
        System.out.println(PI);
    }
}

 

posted @ 2024-04-12 11:08  xiaodi888  阅读(12)  评论(0编辑  收藏  举报