JavaSE基础篇:数据类型

每天定期更新本人从0到1的Java学习过程

//注意:本人在每个输出语句后的 “//” 符号显示的的是当前语句的运行结果!!!方便比较

数据类型
public
class demo1 { public static void main(String[] args) { //数据类型:基本类型,引用类型 //八大基本数据类型(Java是强类型语言) //整数 int num1=10; byte num2=20; short num3=30; long num4=30L;//Long类型要在数字后面加L //小数:浮点型 float num5=50.1F;//float类型要在数字后面加个F double num6=3.141592653589793238462643; System.out.println(); //字符 char name='k'; //字符串,String不是关键词,类,属于引用类型 String names="king"; //布尔型 boolean flag=true; //boolean flag=false; //引用数据类型:类,接口,数组 } }

数据类型拓展
public class demo{
    public static void main(String[] args) {
        //整数拓展 :进制  二进制 十进制 八进制 十六进制

        int i=10;
        int i2=010;//八进制
        int i3=0x10;//十六进制

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);

        //=======================================================
        //浮点数拓展:  银行业务怎么表示钱
        //要用BigDecimal 数学工具类
        //=======================================================

        //float 有限的 离散的  本身有误差  大约  接近但不等于
        //因此尽量避免使用浮点数进行比较
        // double

        float f=0.1f;//0.1
        double d=1.0/10;//0.1
        System.out.println(f==d);//flase f:0.1 d:0.1

        float d1=2323232323f;
        float d2=d1+1;

        System.out.println(d1==d2);//true
        //==比较的是地址因此返回true

        //=========================================
        //字符拓展
        //=========================================
        char c1='a';
        char c2='中';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换

        //所有字符的本质还是数字
        //编码 Unicode表  2字节  0-65536

        char c3='\u0061';

        System.out.println(c3);//从表中找,c3就是a

        //转义字符
        //\t  制表符
        //\n  换行

        System.out.println("Hello\tworld");

        //思考
        System.out.println("===================================");
        String sa=new String("hello world");
        String sb=new String("hello world");
        System.out.println(sa==sb);//flase
        System.out.println(sa.equals(sb));//true
        //为什么?
        String sc="hello world";
        String sd="hello world";
        System.out.println(sc==sd);

        //答案:==比较的是地址而equal比较的才是值

        //布尔值扩展
        boolean flag=true;
        if(flag=true){}//新手
        if(flag){}//老手
        //是一样的
    }

}

 

Java基础:强制转换和自动转换问题

复制代码
public class demo2 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte)i;//-128,内存溢出啊

        //注:小数优先级大于整数
        //由低到高(优先级)
        //byte,short,char->int->long->float->double
        //强制转换  (类型)变量名 由高到低
        //自动转换    由低到高
        System.out.println(i);//128
        System.out.println(b);//-128

        //注意: 1.不能对布尔进行转换
        //      2.不能把对象类型转换成不想干的类型
        //      3.把高容量转换成低容量的时候,强制转换
        //      4.转换的时候存在内存溢出
        System.out.println("======================");
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89f);//-45

        System.out.println("===============");
        char c='a';
        int d=c+1;
        System.out.println((int)c);//97
        System.out.println((int)d);//98
        System.out.println((char)d);//b

    }

}

 

复制代码

转换相关拓展

复制代码
public class demo4 {
    public static void main(String[] args) {
        //操作比较大的数时候,溢出问题
        //JDK7新特性,数字之间可用下划线分割,方便读数
        int money=10_0000_0000;
        int years=20;
        int total=money*years;//-1474836480,计算式溢出’=
        long total2=money*years;//默认是int,转换之前就已存在问题

        long total3=money*((long)years);//先转换在计算就没问题了
        System.out.println(total3);



    }
}

 

 

 变量

类变量:从属当前类

实例变量:从属对象,如果不进行初始化,该变量会是这个类型的默认值

局部变量:必须沈明和初始化,只在当前main内可用

package com.cl.base;

public class demo5 {

    //类变量 static;类变量从属当前类,
    static double salary=2500;

    //实例变量:从属对象:如果不进行初始化,该变量就会是这个类型的默认值
    String name;
    int age;

    //main方法
    public static void main(String[] args) {

        //局部变量:必须声明和初始化值; 只在当前main内有
        //布尔值:默认值false
        //除了基本类型,其余默认值都是null
        int i=10;

        System.out.println(i);

        //变量类型   变量名字=new com.cl.base.demo5();
        demo5 Demo5 = new demo5();
        System.out.println(Demo5.age);//0
        System.out.println(Demo5.name);//null

        //类变量 static
        System.out.println(salary);
    }

    //其他方法
    public void add(){

    }
}

修饰符规范

package com.cl.base;

public class Demo6 {

    //修饰符,不存在先后顺序
    //final:静态变量,常量 不可改变的
    static  final  double PI=3.14;

    public static void main(String[] args) {
        System.out.println(PI);
    }
}
//变量名规范
//所有变量,方法,类名:见名知意
//类成员变量:首字母小写和驼峰原则:monthSalary
//局部变量:首字母小写和驼峰原则
//常量:大写字母和下划线:MAX_VALUE
//类名:首字母大写和驼峰原则:Man,GoodMan
//方法名:首字母小写和驼峰原则 run(),runRun()

 

二元运算符

package com.cl.operator;

public class Demo01 {
    public static void main(String[] args) {
       //二元运算符
        //快捷键 Ctrl+D:复制当前行到下一行
       int a=10;
       int b=20;
       int c=25;
       int d=25;
        System.out.println(a+b);//30
        System.out.println(a-b);//-10
        System.out.println(a*b);//200
        System.out.println(a/b);//0
        System.out.println(a/(double)b);//0.5
    }
}
package com.cl.operator;

public class Demo02 {
    public static void main(String[] args) {
        long a=123123123123123L;
        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,其他的为int

    }
}

 

 

一元运算符

package com.cl.operator;

public class Demo03 {
    public static void main(String[] args) {
        //++ -- 自增。自减,一元运算符
        int a=3;

        int b=a++;//执行完这行代码后,先给b赋值,在、再自增
        //相当于a=a+1;
        System.out.println(a);//4

        //相当于a=a+1;
        int c=++a;//执行完这行代码前,先自增,再复制

        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5

        //使用工具类运算
        double pow = Math.pow(2,3);
        System.out.println(pow);//8.0
        //28

    }
}
短路运算!!
package com.cl.operator;

public class Demo05 {
    public static void main(String[] args) {
        
        int c=5;
   重点!boolean d=(c<4)&&(c++<4);//当前面的为错时后面不执行 
        System.out.println(d);//false
        System.out.println(c);//5
    }
}

 

 

位运算

package com.cl.operator;

public class Demo06 {
    public static void main(String[] args) {
        /*

        位运算

        A=0011 1100
        B=0000 1101

        A&B=0000 1100
        A|B=0011 1101
        A^B(异或)=0011 0001 相同为0不相同为1
        ~B=1111 0010 取反

        2*8=16 电脑识别 2*2*2*2
        位运算优点:效率高
        << 左移 相当于*2
        >> 右移  /2

        eg:
        0000 0000   0
        0000 0001   1
        0000 0010   2
        0000 0011   3
        0000 0100   4
        0000 1000   8
        0001 0000   16


         */


    }
}

字符串连接符,面试题!

package com.cl.operator;

public class Demo07 {
    public static void main(String[] args) {
        int a=10;
        int b=20;

        a+=b;//a=a+b
        a-=b;//a=a-b
        System.out.println(a);//10

        //字符串连接符    +, String
        System.out.println(a+b);//30

        //面试题!!!:一下两种情况有什么不同
        System.out.println(""+a+b);//1020:先字符串连接没有进行运算,String类型
        System.out.println(a+b+"");//30;先运算后连接 String类型

System.out.println(a+b+"king");//30king;先运算后连接,String类型 } }

三元运算符

package com.cl.operator;



//三元运算符
public class Demo08 {
    public static void main(String[] args) {
        //x?y:z
        //如果x==true,结果为y,否则结果为z

        int score=80;
        String type=score<60?"不及格":"及格";
        System.out.println(type);



        //运算符优先级
        //指针最优,单目运算优于双目运算,如正负号
        //先算术运算,后移位运算,最后位运算:eg:1<<3+2&7==(1<<(3+2))&7

    }
}

包机制

package com.cl.operator;

public class Demo09 {
    /*包机制
        为了更好的组织类,java提供了包机制,用于区别类名的命名空间
        包语句语法格式:
            package pkg1[.pkg2[.pkg3]];

        **一般利用公司域名倒置作为包名;

        为了能够使用某一个包的成员,我们需要再java的程序中明确导入该包
        使用“import”语句可完成此功能
        import package1[.package2....].(classname|*);*代表全部(通配符)
        eg:import com.base.Demo01
            import com.base.*   代表当前包的全部参数


    */
}

JavaDoc

package com.cl.operator;

/**
 * javadoc命令是用来直接生成自己的API文档的
 *
 * @autor 作者名
 * @version 版本号
 * @since   指明需要最早的jdk版本
 * @param参数名
 * @return 返回值情况
 * @throw 异常抛出情况
 * */

/*
 * @author CL
 * @version 1.0
 * @ since 1.8
 * */

public class Doc {

    String name;

    /**
     * @author CL
     * @param name
     * @return
     * @throws Exception
     */

    public String test(String name) throws Exception{
        return name;
    }

}

 

posted @ 2020-09-03 19:32  凸然猿  阅读(179)  评论(0编辑  收藏  举报