Java基础-22.10.17

Java基础

注释、标识符、关键字

注释

书写注释是一个非常好的习惯,注意规范!

  • 单行注释 //

  • 多行注释/* */

  • 文档注释/** */可加参数

关键字

abstractassertbooleanbreakbyte
摘要明确肯定布尔值打破(跳出循环)字节
casecatchcharclassconst
案例捕获多种数据类型的异常对象只可容纳单个字符的一种基本数据类型常类型(定义的变量或对象的值不可改变)
continuedefaultdodoubleelse
结束循环默认运算符或文本生成类型的默认值一起用于创建do-while循环数据类型判断语句
enumextendsfinalfinallyfloat
枚举类型继承可以用来修饰类、方法和变量(包括成员变量和局部变量)一定会被执行数据类型
forgotoifimplementsimport
循环无条件转移语句判断语句对接口的实现导入
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

标识符

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

注意:

  • 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始

  • 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线()或数字的任何字符组合

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

  • 标识符是大小写敏感

  • 合法标识符举例: age、$salary、value、_1_value

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

  • 可以但不建议中文或拼音命名 Low

数据类型

强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。

八大基本类型:

 

  • byte

  • short

  • int

  • long

  • float

  • double

  • char

  • boolean

public class Hello {
    public static void main(String[] args) {
        //八大基本类型
        //整数
        byte num1 = 127;    //(-128~128之间,超出报错)
        short num2 = 32767; //(-32768~32768之间,超出报错)
        int num3 = 10;      //(正负二十一亿,超出报错)
        long num4 = 10L;    //(Long类型要在数字后面加个L)
        //小数:浮点数
        float num5 = 50.1F; //(float类型要在数字后面加个F)
        double num6 = 3.141592653589793238462643;
        //字符
        char name = 'A';    //(只能一个字符)
        //字符串
        //String name1 = "我爱你中国";  //(String是类,不是关键字)
        //布尔值
        boolean flag = true;
        boolean flag1 = false;
    }
}

什么是字节:

  • 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。

  • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,

  • 1B (byte,字节)= 8bit(位)

  • 字符:是指计算机中使用的字母、数字、字和符号

  • 1bit表示1位,

  • 1Byte表示一个字节1B=8b

  • 1024B=1KB

  • 1024KB=1M

  • 1024M=1G.

拓展

  1. 整数拓展

    public class Hello {
       public static void main(String[] args) {
       //进制  二进制0b开头  八进制0开头 十进制 十六进制0x开头
            int i = 10;    //十进制
            int i2 = 0b10; //二进制
            int i3 = 010;  //八进制0
            int i4 = 0x10; //十六进制
            System.out.println(i);
            System.out.println(i2);
            System.out.println(i3);
            System.out.println(i4);
       }
    }

 

2.浮点数拓展

public class Hello {
    public static void main(String[] args) {
        //真题:银行业务怎么表示?钱
        //BigDecimal 数学工具类
        //float 有限的 离散的 会舍入误差 大约值  接近但不等于
        //所以最好完全避免使用浮点数进行比较
        //
        //double
        float f = 0.1f;    //等于0.1
        double d = 1.0/10; //等于0.1
        System.out.println(f==d); //false   ==号表示是否相等
​
        float d1 = 3165431246312f;
        float d2 = d1 + 1;
        System.out.println(d1==d2);//true
        
    }
}

 

3.字符拓展

public class Hello {
    public static void main(String[] args) {
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换
        //所有的字符本质还是数字
        //编码 Unicode表 (97=a 65=A) 占2字节 最多表示65536个字节 
    }
}

Unicode表(部分)

 

public class Hello {
    public static void main(String[] args) {
        char c1 = '\u0061';
        System.out.println(c1); //a
        char c2 = '\u005A';
        System.out.println(c2); //Z
    }
}

4.转义字符拓展

public class Hello {
    public static void main(String[] args) {
        //  \t 制表符(水平跳到下一个TAB位置)
        System.out.println("Hello\tWorld");
        //  \n 换行
        System.out.println("Hello\nWorld");
        //  \r 回车(当前位置移到下一行开头)
        System.out.println("Hello\rWorld");
        //  \" 代表一个双引号字符
        System.out.println("Hello\"World");
    }
}

 

5.布尔值拓展

public class Hello {
    public static void main(String[] args) {
       boolean flag = true;
       if (flag==true){     //新手写法
           System.out.println("成功");
       }
       if (flag){           //老手写法 默认true
           System.out.println("正确");
       }
    }
}    //Less is More! 代码要精简易读

 

类型转换

由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。

 

小数优先级大于整数

强制类型转换

格式:(类型)变量名 高-->低

public class Hello {
    public static void main(String[] args) {
        char c = 'a';
        int d = c+1;
        System.out.println(d);
        System.out.println((char)d);
    }
}

自动类型转换

低-->高

注意点: 1.不能对布尔值进行转换 2.不能把对象类型转换为不相干的类型 3.在把高容量转换低容量时,强制转换 4.转换的时候可能存在内存溢出,或者精度问题

内存溢出了

 

精度问题

 

public class Hello {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割,不会被输出
        int money = 1_000_000_000;
        int years = 20;
        int total = money*years; //结果:-1474836480,计算的时候溢出了
        long total2 = money*years;//结果:-1474836480,默认是int,转换前已经存在问题了
        long total3 = money*((long)years);//结果正确,先把一个数转换为Long
         System.out.println(total3);
    }
}

变量、常量

  • Java是一种强类型语言,每个变量都必须声明其类型

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

  • 数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。

 

注意事项:

  • 每个变量都有类型,类型可以是基本类型(八大基本类型),也可以是引用类型(String……)。

    public class Hello {
        public static void main(String[] args) {
            int a=1,b=2,c=3; //不提倡 保证程序可读性顺畅
            int d=4;
            int e=5;
            String name = "HGP";
            char x = 'X';
            double dou = 3.1415;
        }
    }
  • 变量名必须是合法的标识符

  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

变量作用域

public class Hello {
    //属性:变量
    //实例变量:从属于对象;如果不自行初始化,这个类型的默认值
    //数字类型:默认0 0.0  布尔值:false 除了基本类型其余都是null;
    String name;
    int age;
    //类变量 static
    static double salary = 2500;
    //main方法
    public static void main(String[] args) {
        //局部变量:必须声明荷初始化值,写在方法里
        int i = 10;     //只在这个方法得括号里有用
        System.out.println(i);

        //实例变量:变量类型 变量名字 = new Hello();
        Hello hello = new Hello();
        System.out.println(hello.age);
        System.out.println(hello.name);
        
        //类变量 :static
        System.out.println(salary);
    }
    //其他方法
    public void add() {
    }
}

常量

  • 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。

  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

    final 常量名=值;
    final double PI=3.14;
  • 常量名一般使用大写字符。

public class Hello {
    //修饰符,不存在先后顺序 static final 可换位置
    static final double PI = 3.14;
    public static void main(String[] args) {
        System.out.println(PI);
    }
}

命名规范

  • 所有变量、方法、类名:见名知意

  • 类成员变量:首字母小写和驼峰原则: monthSalary(月工资)除了第一个单词以外,后面的单词首字母大写lastName(姓氏)

  • 局部变量:首字母小写和驼峰原则

  • 常量:大写字母和下划线:MAX_VALUE

  • 类名:首字母大写和驼峰原则: Demo01 Demo02

  • 方法名:首字母小写和驼峰原则: run(), runRun()

运算符

  1. 算术运算符:+,-,*,/,%(取余,模运算),++,--

    public class Hello {
        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 应该转为小数
            System.out.println(a/(double)b);//0.5 一定注意作用范围
            //如果有long型 结果就为long,没有long,都为int
            long a = 21315645321L;
            int b = 123;
            short c = 10;
            byte d = 8;
            System.out.println(a+b+c+d);//21315645462 
            System.out.println(b+c+d);//141  Int
            System.out.println(c+d);// 18  Int
            //取余 模运算
            int a = 10;
            int b = 21;
            System.out.println(b%a);//1  c/a 21/10=2...1
            //++ 自增 --自减 一元运算符
            int a = 3;
            int b = a++; //a++ a=a+1 执行完这行代码后,先给b赋值,再自增
            System.out.println(a);
            System.out.println(b);
            int c = ++a; //a++ a=a+1 执行完这行代码前,先自增,再给b赋值
            System.out.println(a);
            System.out.println(c);
            //幂运算 2^3=8 很多运算,会使用一些工具类来操作
            double pow = Math.pow(2,3);
            System.out.println(pow);
        }
    }
  2. 赋值运算符:= (a=10,把10赋值给a)

  3. 关系运算符:>,<,>=,<=,==(等于),!= (不等于)instanceof

    public class Hello {
        public static void main(String[] args) {
            //关系运算符返回的结果:正确 错误 布尔类型
            int a = 21;
            int b = 123;
            System.out.println(a>b);//false
            System.out.println(a<b);//true
            System.out.println(a==b);//false
            System.out.println(a!=b);//true
    
        }
    }
  4. 逻辑运算符: &&,||,! 与或非

    public class Hello {
        public static void main(String[] args) {
            //与(and) 或(or) 非(取反)
            boolean a = true;
            boolean b = false;
            System.out.println("a && b:"+(b&&a));//两个都为真,才true,第一个假,第二个不执行
            System.out.println("a || b:"+(a||b));//两个变量有一个真,结果true
            System.out.println("!(a && b):"+!(b&&a));//如果真,则变为假,如果假变为真
    
            //短路运算
            int c = 5;
            boolean d = (c<4)&&(c++<4);
            System.out.println(d);//第一个假
            System.out.println(c);//第二个不执行
        }
    }
  5. 位运算符:&,|,^,~,>>,<<,>>>(了解!! ! )

    /*
    A = 0011 1100
    B = 0000 1101
    -------------
    A&B = 0000 1100 如果两个都是1才输出1
    A|B = 0011 1101 如果对应位都是0,才是0,有一个1就1
    A^B = 0011 0001 相同为0 否则是1
    ~B = 1111 0010  完全相反
    */
    System.out.println(2<<3);//16
    2*8 = 16 
    << *2
    >> /2
  6. 条件运算符 ?∶

public class Hello {
    public static void main(String[] args) {
        //x ? y : z
        //如果x=true,则结果为y,否则结果为z
        int score=80;
        String type = score<60?"不及格":"及格";
        System.out.println(type);//及格
    }
}
  1. 扩展赋值运算符:+=,-=,*=,/=

public class Hello {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        a+=b; //a=a+b
        System.out.println(a);//30
        a-=b; //a=a-b
        System.out.println(a);//-10
    }
}

8.字符串连接符 :+

public class Hello {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //字符串加在前面,做连接符
        System.out.println(""+a+b);//1020
        //字符串加在后面,前面正常运算
        System.out.println(a+b+"");//30
    }
}

怎么在控制台输出二进制

int c = 9;
 //0000 1001
for (int i = 31; i>=0 ; i--) {
    System.out.print((c & (1<<i)) ==0?"0":"1");
}

包机制

package 就是文件夹,必须放在最上面。

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。

  • 包语句的语法格式为: package pkg1[. pkg2[. pkg3...]];

  • 一般利用公司域名倒置作为包名;com.systop

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import”语句可完成此功能 import package1[ .package2....].(classname|*);

JavaDoc

javadoc命令是用来生成自己API文档的

参数信息

  • @author作者名

  • @version版本号

  • @since指明需要最早使用的jdk版本

  • @param参数名

  • @return返回值情况

  • @throws异常抛出情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值