Java基础

目录

注释

Java注释有三种

标识符

关键字

标识符的注意点

数据类型

强类型语言

弱类型语言

java的数据类型分为两大类

什么是字节

数据类型扩展

类型转换

变量、常量、作用域

变量

变量作用域

常量

变量的命名规范

运算符

Java语言支持如下运算符:

算数运算符

关系运算符

自增 自减

逻辑运算符

位运算符

扩展赋值运算符

条件运算符(三元运算符)

包机制

JavaDoc


注释

Java注释有三种

  1. 单行注释 //

  2. 多行注释 /* 注释 */

  3. 文档注释 与JavaDoc相互使用 /**文档注释 */

    • 注释不会被执行,是给我们写代码的人看的

标识符

关键字

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

标识符的注意点

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

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

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

  • 标识符是大小写敏感的

  • 合法标识符举例:age,$salary,_value,__1_value

  • 非合法的标识符:123abc,-salary,#abc

  • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很low

数据类型

强类型语言

  • 要求变量的使用要严格符合规定,所有的变量都需要先定义才能使用

弱类型语言

  • 要求变量的使用符合规定

java的数据类型分为两大类

基本类型(primitive type)

数值类型(八大数据类型)

  1. 整数类型

    • byte 占1个字节范围:-128-127

    • short占2个字节范围:-32768-32767

    • int占4个字节范围:-2147483648-2147483637

    • long占8个字节范围:-9223372036854775808-9223372036854775807

      byte num1 = 10;
      shrot num2=20;
      int num3 = 30;//最常用
      long num4 = 30L;//Long类型要在数字后面加个L
  2. 浮点数类型

    • float占4个字节

    • double占8个字节

      float num5=50.1F;//faoat类型要在数字后面加个F
      double num6 =3.1415926;
  3. 字符类型

    • char占2个字节

      char num7='A';//赋值时只能给一个英文字母或者一个中文字
      //字符串
      String num8="你好世界";//String不是关键字,是类

  • boolean类型 占1位其值只有false 和true

引用类型(reference type)

  1. 接口

  2. 数组

什么是字节

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

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

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

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

  • 1bit表示1位

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

  • 1024B=1KB

  • 1024KB=1M

  • 1024M=1G

  • 1024G=1TB

数据类型扩展

public class Demo01 {
    public static void main(String[] args) {
        //整数扩展  进制      二进制0b     十进制     八进制0     十六进制0x
        int a = 10;
        int b = 010;
        int c = 0b10;
        int d = 0x10;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println("==================================================");
        //=================================================================================================
        //浮点数扩展         银行业务怎么表示?
        //              不用浮点数进行表示,用BigDecimal(数学工具类)
        // float
        //double
        float F = 0.1F;
        double D = 1.0/10;
        System.out.println(F==D);//false
        System.out.println(F);
        System.out.println(D);
        float F1=123456789F;
        float F2=F1+1;
        System.out.println(F1==F2);//true
        //上面的结果为什么不一样
        //因为 浮点数表示的字长是有限的也是离散的,浮点数会舍入误差(没办法精确的表示),结果只能是一个大约数,接近但不等于
        //最好完全避免浮点数进行比较
        System.out.println("==================================================");
        //=================================================================================================
        //字符拓展
        //=================================================================================================
        char c1 ='a';
        char c2 ='中';
        System.out.println(c1);
        System.out.println((int)c1);//讲字符串类型转换为int类型:   强制转换
        System.out.println(c2);
        System.out.println((int)c2);
​
        //所有的字符本质还是数字
        //char会涉及到  编码  问题
        // 编码里有一个  Unicode编码(可以处理各种语言的文字)  占2个字节   最多可以表示65536个字符 2^16=65536(现在不止这些)
        // Unicode 里面有一个表   表里面有定义(eg:97=a  65=A)
        //会通过Unicode 的编码 用过转义来表示    U0000----UFFFF1
        char c3 ='\u0061';
        System.out.println(c3);//a
        // 转义字符
        // eg \t :制表符   \n  :换行 ....
        //=================================================================================================
        // 布尔值扩展
        boolean b1=true;
        if (b1==true){System.out.println("123");}
        if (b1){System.out.println("123");}//两个相等
        //Less is more ! 代码要精简易读
    }
}
​

类型转换

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

    低----------------------------------------------------------->高

    byte->short->chat->int->long->float->double 为什么小数比整数高,因为小数的优先级一定大于整数

  • 运算中,不同类型的数据先转化成为同一类型,然后进行计算

  • 强类型转换

  • 自动类型转换

    public class Basics05 {
        public static void main(String[] args) {
            int i =128;
            byte b =(byte) i;//内存溢出
            //强制转换 :  (类型)变量名   高---->低
            //自动转换 :  什么都不用写    低---->高
    ​
    ​
    ​
            System.out.println(b);//-128 ? 因为内存溢出
            /*注意点
            1.不能对布尔值进行转换
            2.不能把对象类型转换成不相干的类型
            3.在把高容量转换到低容量的时候,强制转换
            4.转换的时候可能存在内存溢出,或者精度问题
             */
            System.out.println((int)38.9);//输出结果:38
            char c='a';
            int i2=c +1;
            System.out.println(i2);//98
            System.out.println("======================================================================================");
            //常见的问题
            //操作比较大的数的时候,注意溢出问题
            //JDK7的新特性,数字之间可以用下划线分割(不会被输出)
            int money = 10_0000_0000;
            int years = 20;
            int total = money*years;//输出结果:-1474836480 ,本来改200_0000_00000;是因为int 最大是20亿。计算的时候溢出了
            System.out.println(total);
            long total2 =money*years;// 输出结果:-1474836480,以为long给的是转换后的类型,而这里转换前就出问题了
            System.out.println(total2);
            long total3 = money*(long)years;//输出结果:200_0000_00000 结果对了      因为先把一个数转换成为了Long
            System.out.println(total3);
            //  L l(有些地方会把小写的l当成1)
        }
    }
    ​

变量、常量、作用域

变量

  • 变量是什么:就是可以变化的量

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

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

变量的定义

数据类型 + 变量名 = 值; 可以用逗号隔开来声明多个同类型变量(不建议)

int a =10;

注意事项

  • 每个变量都有类型,可以使基本类型,也可以是引用类型 基本类型:八大基本类型数据 引用类型:Eg:String

  • 变量名必须是合法的标识符

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

变量作用域

  1. 类变量

  2. 实例变量

  3. 局部变量

public class Hello{
    static int allAge = 0;//类变量
    String str = "hello world";//实例变量
    public void method(){
        int i = 0;//局部变量
    }
}

public class Basics06 {
        //属性:变量
        //类变量(静态变量) 关键字:static
        static double  salary = 2500;
        //实例变量(动态变量):从属于对象(从属于类);       如果不进行初始化,数值类型的默认值为:0  0.0 u000
        // 布尔值:默认是false
        //除了基本类型,其余的默认值都是 null
        String name;
        int age ;
​
        //main方法
        public static void main(String[] args) {
                //局部变量:声明和初始化值 (只能用在此方法,不能用在其他方法)
                int c =10;
                //声明  初始化值
                System.out.println(c);
                //使用实例变量
                //变量类型 变量名字 = new Basics06();
                 Basics06 basics06 =new Basics06();
                System.out.println(basics06.age);
                //类变量
                System.out.println(salary);
​
        }
        //其他方法
​
​
        public void method(){
                System.out.println(salary);
        }
}
​

常量

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

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

    final 常量名 =值;

    eg final PI =3.14;

  • 常量名一般使用大写

public class Basics0601 {
    // static final 修饰符、关键字 不分先后顺序
    static final double PI =3.14;
    public static void main(String[] args) {
        System.out.println(PI);
    }
}
​

变量的命名规范

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

  2. 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词小写以外,后面单词的首字母大写

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

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

  5. 类名:首字母大写和驼峰原则:Man GoodMan

  6. 方法名:首字母小写和驼峰原则:run() runGodd()

运算符

Java语言支持如下运算符:

  • 算数运算符: +,-,*,/,%,++,--

  • 赋值运算符: =

  • 关系运算符: >, <, >=, <=, ==, !=, instanceof

  • 逻辑运算符:&&, ||, !

  • 位运算符:&, |, ^, ~, >>, <<, >>>(了解!!!)

  • 条件运算符: ?, :

  • 扩展赋值运算符:+=,-=,*=,/=

算数运算符

package poerator;
​
public class Basics07 {
    public static void main(String[] args) {
        //二元运算符
        int a = 10;
        int b = 20;
        int c = 21;
        System.out.println(a+b);// 30   + 相加
        System.out.println(a-b);// -20  - 相减
        System.out.println(a*b);// 200  * 相乘
        System.out.println(a/b);//0  因为a/b 内存溢出了 所以为0
        System.out.println(a/(double)b);//0.5   / 相除
        System.out.println(c%a);//1     % 取余,模运算    c%a c/a=2.....1
    }
}

package poerator;
​
public class Basics0702 {
    public static void main(String[] args) {
        long a = 123456789L;
        int  b = 123;
        short c =10;
        byte d = 8;
        System.out.println(a+b+c+d);// 123456930 Long类型     两个操作或者多个操作中 有一个数为long 那么结果一定是Long类型
        System.out.println(b+c+d);//   141       int类型      两个操作或者多个操作中 没有一个数为long 那么结果都为int类型
        System.out.println(c+d);//     18        int类型      无论是不是由int类型
                                //                                  同理
                                    //                                   如果有一个数是double 那么结果一定为double类型
    }
}
​

关系运算符

package poerator;
​
public class Basics0703 {
    public static void main(String[] args) {
        // 关系运算符返回结果: 正确    错误  布尔型
        // 同常跟if一起使用
        int a =10;
        int b =20;
        System.out.println(a>b);//false     a不大于b
        System.out.println(a<b);//true      a小于b
        System.out.println(a==b);//false    a不等于b
        System.out.println(a!=b);//true     a不等于b
        int c =21;
    }
}
​

自增 自减

package poerator;
​
public class Basics08 {
    public static void main(String[] args) {
        // ++  --  自增 自减  一元运算符
        //  a++     a=a+1;
        //输出结果不同是因为时机不同
        int a =1;
​
​
        int b = a++;//执行完这行代码:先给b赋值,再自增
        //a=a+1;
        System.out.println(a);
        //a=a+1;
        int c = ++a;//执行完这行代码,先自增,再给c赋值
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        //幂运算   2^3=8
        double pow=Math.pow(3,3);//幂运算
        System.out.println(pow);
        double w =Math.abs(-2);//绝对值
        System.out.println(w);
    }
}
​

逻辑运算符

package poerator;
​
public class Basics09 {
    public static void main(String[] args) {
        // &&(与)    ||(或)   !(非)
        boolean a = true;
        boolean b = false;
        System.out.println("a&&b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为真;
        System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果为真;
        System.out.println("!(a&&b:)"+!(a&&b));//如果是真,则为假。如果为假,则为真;
        //短路运算
        int c =5;
        boolean d = (c<4)&&(c++<4);       // 因为逻辑与运算,只要有一个假就会输出结果:假 而当它得到c<4是假的,就不会去运行c++<4
        System.out.println(d);//false     // 俗称短路运算
        System.out.println(c);
        int e = 5;
        boolean f = (e>4)||(e--<4);       // 因为逻辑或运算,只要有一个真就会输出结果:真 而当它得到c>4是真的,就不会去运行c--<4
        System.out.println(e);//true      // 俗称短路运算
        System.out.println(f);
    }
​
​
}
​

位运算符

package poerator;
​
public class Basics09 {
    public static void main(String[] args) {
        // &&(与)    ||(或)   !(非)
        boolean a = true;
        boolean b = false;
        System.out.println("a&&b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为真;
        System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果为真;
        System.out.println("!(a&&b:)"+!(a&&b));//如果是真,则为假。如果为假,则为真;
        //短路运算
        int c =5;
        boolean d = (c<4)&&(c++<4);       // 因为逻辑与运算,只要有一个假就会输出结果:假 而当它得到c<4是假的,就不会去运行c++<4
        System.out.println(d);//false     // 俗称短路运算
        System.out.println(c);
        int e = 5;
        boolean f = (e>4)||(e--<4);       // 因为逻辑或运算,只要有一个真就会输出结果:真 而当它得到c>4是真的,就不会去运行c--<4
        System.out.println(e);//true      // 俗称短路运算
        System.out.println(f);
    }
​
​
}
​
package poerator;
​
public class Basics0902 {
    public static void main(String[] args) {
​
​
    /*  位运算符    效率极高
    & (与)   |(或)  ^(异或)    ~(取反)  <<(左移)   >>(右移)
        A = 0011 1100
        B = 0000 1101
-----------------------------------------------------------------------------
        A&B = 0000 1100     任何二进制和0进行&运算,结果为0;和1进行&运算,结果是原值
        A|B = 0011 1101     任何二进制和0进行|运算,结果是原值;和1进行|运算,结果为1
        A^B = 0011 0001     任何相同二进制进行^运算,结果为0;不相同进行^运算,结果为1
         ~B = 1111 0010
------------------------------------------------------------------------------
        <<  >>  引出面试题
        面试题:2*8怎么运算最快   2*8=16  2*2*2*2=16
        <<  数字 *2
        >>  数字 /2
        0000 0000   0
        0000 0001   1
        0000 0010   2
        0000 0011   3
        0000 0100   4
        0000 1000   8
        0001 0000   16
     */
        System.out.println(2<<3);//左移三位
    }
}
​

扩展赋值运算符

package poerator;
​
public class Basics10 {
    public static void main(String[] args) {
        int a = 20;
        int b = 10;
        int c = a+=b;// a+=b    a=a+b
        int d = a-=b;// a-=b    a=a-b
        int e = a*=b;// a*=b    a=a*b
        int f = a/=b;// a/=b    a=a/b
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
        // 字符串连接符   +   当+两侧有String类型 这个+就会变成连接符,并且会把后面的+也变成连接符
        System.out.println(""+a+b);
        System.out.println(a+b+" "+a+b+":");
    }
}
​

条件运算符(三元运算符)

package poerator;
​
public class Basics1002 {
    public static void main(String[] args) {
        // 三元运算符
        // x ? y :z
        //如果x==true,则结果为y,否则结果为z
        int score =80;
        String type = score >60 ? "及格" : "不及格";//必须掌握
        System.out.println(type);
    }
}
​

包机制

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

  • 包语句的语法格式为:

    package pkg1[.pkg2[.pkg3...]];eg: package com.chang.poerator;

  • 一般利用公司域名倒置作为包名; eg:com.baidu.www

  • 为了能够使用某一包的成员,我们需要在Java程序中明确导入改包。使用“import”语句可完成此功能

    import package1[pkg2...].(classname|*);eg: import java.util.Date;

    package com.chang.poerator;
    ​
    ​
    import java.util.Date;//导入包
    import com.chang.basics.*;//导入包下所有的类
    ​
    public class Basics1002 {
        public static void main(String[] args) {
          
            Date
        }
    }
    ​

    JavaDoc

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

     

    jdk帮助文档:https://docs.oracle.com/javase/8/docs/api/

    • 参数信息

      • @author 作者名

      • @version 版本号

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

      • @param 参数名

      • @return 返回值情况

      • @throws 异常抛出情况

package com.chang.basics;
​
/**
 * @author chang
 * @version 1.0
 * @since 1.8
 *
 */
public class Doc {
    /**
     *
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
    //通过命令行 cmd->javadoc 参数 java文文件
    //javadoc -encoding UTF-8 -charset UTF-8 Doc.java
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值