02java基础知识

java基础:

01Java里的注释

  1. 单行注释 //

  2. 多行注释 可以注释一段文字 /* */

  3. javadoc 文档注释 /** */

  4. 注释(书写注释是一个非常好的习惯)

02 标识符

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

     

03 数据类型

01强数据类型

  1. 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

02Java数据乐星分为两大类

  1. 基本类型

    • 整数类型

      • byte

      • short

      • int

      • long long num = 40L long类型要再数字后面加个L

    • 小数

      • float float num1 = 50.1F float 类型要在数字后面加个F

      • double

    • 字符

      • char

    • 布尔值:是非

      • true

      • false

  2. 引用类型

    • 接口

    • 数组

04数据类型扩展及面试题讲解

  1. 整数扩展(进制)

  • 二进制0b

  • 八进制0

  • 十进制

  • 十六进制0x 0~9,A~F,

  1. 浮点数扩展 银行业务怎么表示? 钱

  • float 有限 离散 舍入误差 大约 接近但不等于 最好完全避免使用浮点数进行比较!

  • BigDecimal 数学工具类( 银行业务)

  1. 字符扩展

 char c1 ='a';
       char c2 = '中';
       System.out.println(c1);
       System.out.println((int)c1);//sout
       System.out.println(c2);
       System.out.println((int)c2);//强制转换
       //所有的字符本质还是数字
       //编码Unicode 表:(97 = a 65 = A) 0-65536 2的16次方

 

 

  1. 转义字符

  • \t 制表符

  • \n 换行

  1. 对象内存分析

     //对象 从内存分析
           String sa = new String("hello world");
           String sb = new String("hello world");
           System.out.println(sa==sb);

           String sc = "hello world";
           String sd = "hello world";
           System.out.println(sc==sd);

     

    ==比较的是地址。如果比较的对象是基本数据类型,则比较的是数值是否一致。如果比较的是引用数据类型,则比较的是对象类型的地址是否一致。

    String是引用类型的变量。new是新建一个内存堆,新的地址,比较的是指向内存地址是否相同。第二个是常量池中,比较的是内容是否一致。

  2. 布尔值写法

     //布尔值拓展
           boolean flag = true;
           if (flag==true){}//新手
           if (flag){}//老手

     

05类型转换

  1. 由于Java是强类型语言,所以有些运算需要进行类型转换。

    低-------------高

    byte,short,char-> int -> long -> float -> double

  2. 运算中,不同类型的数据先转化为同一类型,然后进行运算。

    package base;

    public class Demo5 {
       public static void main(String[] args) {
           int i =128;
           byte b = (byte)i;//byte的区间是-128-127 ,超过范围就随机赋值
           System.out.println(i);
           System.out.println(b);
           //强制转换 (类型)变量名 高--低
           //自动转换 低--高
           int ii =128;
           double bb = ii;
           System.out.println(ii);
           System.out.println(bb);
           /*
           注意点:
        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(d);

      }
    }

     

    package base;

    public class Demo6 {
       public static void main(String[] args) {
    //       操作比较大的数的时候,注意溢出问题
           //jdk新特性,数字之间可以用下划线分隔
           int money = 10_0000_0000;
           int years = 20;
           int total = money*years;//-1474836480,结果本应该是200_0000_0000,计算的时候已经溢出了。
           long total2 = money*years;//-1474836480,默认是int类型,转换之前已经存在问题了

           long total3 = money*((long)years);//先把一个数先转为long
           System.out.println(total);
           System.out.println(total2);
           System.out.println(total3);
      }
    }

06变量、常量、作用域

1.变量

  1. 变量:就是可以变化的量。

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

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

    • type varName [=value] [{, varName[=value]}];

    • //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量(但是最好不要在一行写多个变量,不具有良好的可读性。)

      package base;

      public class Demo7 {
         public static void main(String[] args) {
             //int a,b,c
             int a=1,b=2,c=3;//写在一行,可读性低。
             String name = "ysl";//引用类型
             char x = 'x';
             double pi = 3.14;
        }
      }

       

  2. 注意事项:

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。

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

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

       

       

2.变量作用域

  1. 类变量

  2. 实例变量

  3. 局部变量

public class Demo08 {
   //类变量 static
   static double salary = 2500;

   //属性:变量
   //实例变量:从属于对象;如果不自行初始化,这个类型的默认值0 0.0
   //布尔值:默认false
   //除了基本类型,其余的默认值都是null

   String name;
   int age;

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

       //局部变量:必须声明和初始化值(只能在这个括号里使用。)
       int i =10;
       System.out.println(i);

       //变量类型 变量名字 = new Demo08();
       Demo08 demo08 = new Demo08();
       System.out.println(demo08.age);
       System.out.println(demo08.name);

       //类变量 static 可以直接使用
       System.out.println(salary);
  }
   //其他方法
   public void add(){
       
  }
}
 

3.常量

  1. 常量(Constant):初始化后不能再改变值,不会变动的值。

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

  3. final 常量名 = 值;

    final double PI = 3.14;

  4. 常量名一般使用大写字符。

package base;

public class Demo09 {
   //修饰符,不存在先后顺序,还有public,private
   static final double P = 3.14;
   public static void main(String[] args) {
       System.out.println(P);
  }
}

 

4.变量的命名规范

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

    驼峰原则:除了第一个单词除外,后面的单词首字母大写,如:lastName

  2. 类成员变量:首字母小写和驼峰原则:monthSalary

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

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

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

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

     

07运算符

1.java语言支持如下运算符:

  1. 算数运算符:+, -, *, /, %, ++, --

package 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);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
        //a/b为int类型,结果为0.5,向下取整但是最后出来为0;
        //因此要提前把一个数换类型。
    }
}
package operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 123123123123123L;
        int b = 123;
        short c = 10;
        byte d = 8;
        //没有long,运算都为int
        //不同类型混合运算无论是赋值还是运算都是向最高位转
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//int
        //System.out.println((String)(c+d)); //int//Inconvertible types; cannot cast 'int' to 'java.lang.String'
        System.out.println((double)c+d);
    }

}
/**
答案:
123123123123264
141
18
18.0
*/


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

        int b = a++;//执行完这行代码后,先给b赋值,再自增
        //a = a+1;
        System.out.println("a=:"+a);
        System.out.println("=======");
        //a = a+1;
        int c = ++a;//执行完这行代码前,先自增,再给c赋值

        System.out.println("a=:"+a);
        System.out.println("b=:"+b);
        System.out.println("c=:"+c);

        //幂运算 很多运算使用工具类
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
}

 

  1. 赋值运算符:=

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

package operator;

public class Demo3 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误 布尔值
        //if
        int a = 10;
        int b = 20;
        int c = 21;
        //取余
        System.out.println(c%a);// c/a 21/10 =2...1
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);

    }
}
/**
答案:
1
false
true
false
true
*/

 

  1. 逻辑运算符:&&,||,!

package operator;
//逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
        //与(and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a&&b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为真
        System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果为true
        System.out.println("!(a&&b):"+!(a&&b));//如果是真,则变为假,如果为假,则变为真。

        //短路运算 第一个是flase 就不会进行下一个了。
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);
    }
}

 

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

package operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        ---------------
        A&B = 0000 1100(如果两个都为1,结果为1)
        A/B = 0011 1101(对应位都是0结果为0,不然为1)
        A^B = 0011 0001 (对应位置相同就为0,不同就为1)
        ~B  = 1111 0010(与本身完全相反)

        2*8=16怎么运算最快 2*2*2*2
        效率极高
        << *2 左移
        >> /2 右移

        0000 0000 0
        0000 0001 1
        0000 0010 2
        0000 0011 3
        0000 0100 4
        0001 0000 16
         */
    }
}

 

  1. 条件运算符: ?:

package operator;
//三元运算符
public class Demo08 {
    public static void main(String[] args) {
       //x ? y:z
        //如果 x==true,则结果为y,否则为z
        int score = 80;
        //if
       String type = score <60? "bu及格":"及格";
        
    }
}

 

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

package 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);
        //面试题字符串连接符 + , String
        System.out.println(""+a+b);
        System.out.println(a+b+"");//只要不是在最末尾,都会把其余转化成String

    }
}

2.优先级

  1. 算术运算符、赋值运算符、逻辑运算符、关系运算符等基础运算符,并且在书写赋值语句时都没添加圆括号,显然是默认了先完成算术、逻辑、关系等运算,最后才进行赋值操作。

  2. 算术运算符内部各符号的优先级顺序依次为:+正号、-负号 > 乘号*、除号/、取余数符号% > 加号+、减号-。

  3. 关系运算符,关系符号包括等号、不等号、大于号、小于号等等,它们互相之间的优先级是一样的。

  4. 逻辑运算最终的优先级顺序为:逻辑非运算! > 关系运算符(含等号、不等号) > 其它逻辑运算符(含与符号&、或符号|、异或符号^)

  5. 总结:总结一下,倘若没有圆括号加以约束,那么对于数值变量来说,几种运算符的优先级顺序依次为:正号、负号 > 乘号、除号、取余号 > 加号、减号 > 大于号、等号、小于号、不等号 > 各种赋值符号;对于布尔变量来说,相关运算符的优先级顺序依次为:逻辑非 > 等号、不等号 > 逻辑与、或、异或 > 各种赋值符号。

    https://www.cnblogs.com/pinlantu/p/9853493.html

 

08包机制

1.包

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

2.包语句的语法格式为:

  • package pkg1[ .pkg2[. pkg3...]];

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

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

    import package1.[.package2...].(classname|*);

    eg.

    import com.kuang.base.*;(导入这个包的所有类)

 

09JavaDoc

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

  1. 参数信息:

    • @author 作者名

    • @version 版本号

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

    • @param 参数名

    • @return 返回值情况

    • @throws 异常抛出情况

    package base;
    /**
     * @author  ysl
     * @version 1.0
     * @since  1.8
    
     */
    public class Doc {
        String name;
    
        /**
         *
         * @param name
         * @return
         * @throws Exception
         */
    
        public String test(String name)throws Exception {
            return name;
    
        }
        //kuangshen 是通过命令行 javadoc 参数 Java文件
        //作业:学会查找使用IDEA生产JavaDoc文档! 面向百度编程
    }
    
    1. IDLE上操作进行生成dos文档

     

 

posted @ 2021-02-13 13:06  盐水汤包  阅读(68)  评论(0)    收藏  举报