Java 自学第四天 Java基础(全)


今天周末在家把Java基础学完了,把第三天的一部分一起复制过来,这样回头看的时候容易查缺补漏。


关键字

关键字不能作为文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0g02N1I8-1613919104272)(C:\Users\DD\Desktop\Java\TU\Java关键字.png)]

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

  1. 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(__)开始
  2. 首字母之后可以是字母(A-Z或者a-z),美元符($),下划线(__)或数字的任何字符组合
  3. 不能使用关键字作为变量名或方法名
  4. 标识符是大小写敏感
  5. 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,Low

数据类型

强类型语言-----JAVA(安全性高,牺牲一定速度)

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

弱类型语言–VB/JS等(和强类型相反)


Java的数据类型分为两大类

基本类型(primitive type)

数值类型整数类型byte占1个字节范围:-128-127
short占2个字节范围:-32768-32767
21亿int占4个字节范围:-2147483648-2147483647
long占8个字节范围:9开头,19位数
浮点类型float占4个字节
double占8个字节
字符类型chart占2个字节
boolean类型占1位其值只有true和false两个
 //整数
        int n0 = 1111; //最常用
        byte n1 = -128;
        short n2 = 3276;
        long n4 = 1234567890123456789L; //Long类型需要在数字后面加L
        //小数:浮点数
        float n5 = 50.1231111F; //float类型需要在数字后面加F
        double n6 = 3.333333333333333333333;

        //字符
        char n7 = 'a';
        char n8 = '帅';

        //字符串,String不是关键字,是类
        //String name = "哈哈哈";

        //布尔值
        boolean flag = true;
        boolean Flag = false;

什么是字节

  • 位(bit):计算机内的最小单位,11001100是一个八位的二进制数
  • 字节(byte):计算机中数据处理的基本单位,习惯用大写B表示
  • 1B(byte,字节)=8bit (位)
  • 字符:指计算机中使用的字母、数字、字和符号
  • 1B=8b 1024B=1KB 1024KB=1M 1024M=1G

引用类型(reference type)

类 //接口 //数组


数据类型的扩展

public class HelloWorld {
    public static void main(String[] args) {
        //整数拓展:进制  二进制0b  十进制 八进制0  十六进制0x
        int i1 = 10;
        int i2 = 011;  //八进制0
        int i3 = 0x14567; //十六进制0x  0-9  A-F
        int i4 = 0b1111; //二进制0b
        //我个人的理解是,这个公示最终是以10进制的形式表达出来的
        //无论是八进制的0开头还是,十六进制的0x开头
        //011 也就是八进制的是11 ,代表十进制的9
        //转换过程
        //int i2 = 08;  不行,因为八进制里面没有8,也没有9
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
        System.out.println("===============分隔符=====================");

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

        //float  有限 离散 舍入误差 大约 接近但不等于的
        //double
        //最好不要使用浮点数进行比较

        float f1 =0.1f;   //0.1
        double f2=1.0/10; //0.1

        System.out.println(f1==f2); //false

        float d1 = 1321354313154354f;
        float d2= d1+1;
        System.out.println(d1==d2); //true
        System.out.println("===============分隔符=====================");

        //===============================================================
        //字符串拓展
        //===============================================================

        char c1 = 'D';
        char c2 = '帅';

        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换
        System.out.println("===============分隔符=====================");

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

        //转义字符
        // \t 制表符
        // \n 换行
       
        //===============================================================
        //布尔值拓展
        //===============================================================

        boolean flag = true;
        if(flag==true){}  //新手
        if(flag){};
        //Less is more

    }
}

类型转换

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

低----------------------------------------高(容量)

byte,short,char --int–long–float–doubule

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

	   int i = 128;
        byte b = (byte)i; //-128 内存溢出

//强制转换  (类型)变量名  高--低
//自动转换  低--高 可以直接转

        System.out.println(i);
        System.out.println(b);
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转为不相干的类型
3.在高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
*/
        System.out.println("===========");
        System.out.println((int)23.7); //23
        System.out.println((int)-45.86f); //-45

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

//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割

        int money = 10_0000_0000;
        int years = 20;
        int total1 = money*years; //-1474836480,溢出了,int容量只到21亿
        long total2 = money*years; //默认是int,转换之前已经存在问题
        long total3 = money*((long)years);//先把一个数转为long,成功200亿

        System.out.println(total1);
        System.out.println(total2);
        System.out.println(total3);

//注意数字后面的以大写的字母结尾 比如200000L ,45.666F

变量

  • 变量是什么:就是可以变化的量!
  • Java是一种强类型语言, 每个变量都必须声明其类型。
  • Java变量是程序中最基本的存储单元, 其要素包括变量名, 变量类型和作用域
type varName  [=value]   [{, varName[=value] } ]//数据类型变量名=值;可以使用逗号隔开来声明多个同类型变量。
        //int a,b,c; //可定义多给元素,不推荐
        //int a=1,b=2,c=3;//程序可读性
        String name = "哈哈哈"char x = 'X';
        double pi = 3.14;

变量的作用域

  1. 类变量
  2. 实例变量
  3. 局部变量
public class Demon04 {
    //属性:变量

    //类变量 static 从属于Demon04 ,和类一起出现一起消失
    static  double salary = 2500;

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

   //main方法
    public static void main(String[] args) {
        //局部变量 两个{}之间的 :必须声明和初始化值
        int i = 10;
        System.out.println(i);

        //实例变量 变量名字 = new Demon04();
        Demon04 demon04 = new Demon04();
        System.out.println(demon04.age);
        System.out.println(demon04.name);

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

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

    }
}

常量

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

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

    ​ final常量名=值;
    ​ final double PI=3.14;

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

public class Demon05 {

    //修饰符,不存在先后顺序,static  public 都是,等等
    static final double PI = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);
    }
}


变量的命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:month Salary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man, GoodMan
  • 方法名:首字母小写和驼峰原则:run() , run Run()

基础运算

  • 算数运算符:+,-,*,/,%(取余),++,–
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=(不等于),instanceof (百度的:严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,老师略过,应该是要在后面说)
  • 逻辑运算符:&& 与, || 或 , ! 非
  • 位运算符:& , | , ^ , ~ , >> , << , >>>(老师说了解,没展开说,我百度也是位移的意思,不过2个3个有区别,先略过)
  • 条件运算符 ? :
  • 扩展赋值运算符:+= , -= , *= , /= (偷懒)
 //二元运算符

        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;

        System.out.println(a+b);  //30
        System.out.println(a-b);  //-10
        System.out.println(a*b);  //200
        System.out.println(a/(double)b);  //0  因为默认  ab都是int整数,要先改变一个类型

        long a = 466L;
        int b = 123;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);//有long类型的运算 结果为long
        System.out.println(b+c+d);//其余都为int
        System.out.println(c+d);//其余都为int
        //cast转换的意思

        double f = 3.33;
        float  e = 0.5F;

        System.out.println(a+b+c+d+f); //有double的话,结果就是double
        System.out.println(a+e);//float也大过long
//关系运算符返回的结果:正确 错误  布尔值
        int a = 10;
        int b = 20;
        int c = 21;

        System.out.println(c%a);//取余,模运算 c%a 21/20=2.....1

        System.out.println(a>b); //false
        System.out.println(a<b); //true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
// ++  --  自增  自减  一元运算
        int a = 3;

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

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //幂运算 2^3  2*2*2=8  很多运算使用工具来操作
        double pow = Math.pow(2,3);
        System.out.println(pow);
 // &&与-and   ||或-or  !非- 取反
        boolean a = true;
        boolean b = false;

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

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);//c=5 证明第一个判断是假的,后面的c++没有运行,短路了

        A = 0011 1100
        B = 0000 1101
-----------------------------------------
        A&B 0000 1100 两个都是1才为1     与
        A|B 0011 1101 有一个是1即为1     或
        A^B 0011 0001 相同是0,不同是1   异或
        ~B  1111 0010 取反

        2*8 = 16 2*2*2*2
        //2*8在计算机里最快的计算方式
        效率极高
        <<   *2
        >>   /2
        0000 0000   0
        0000 0001   1
        0000 0010   2
        0000 0011   3
        0000 0100   4
        0000 1000   8
        0001 0000   16
        int a = 10;
        int b = 20;

        a+=b; // a = a+b  偷懒用,但不建议
        a-=b; // a = a-b

        System.out.println(a);

        //字符串连接符  + ,Stromg

        System.out.println(a+b);
        System.out.println(""+a+b); //字符串在前面,已经变类型了
        System.out.println(a+b+"");//字符串在后面,先运算

 		//三元运算
        // x ? y : z
        // 如果x==true ,则结果为y,否则结果为z

        int score = 88;
        String  type = score<60 ? "不及格" : "及格";
        //重要,必需掌握
        System.out.println(type);

优先级 () 一元运算 加减乘除


包机制

  • 包的本质就是文件夹,用于区别类名的命名空间。
  • 包语句的语法格式为:
package pkg1[ .pkg2[ .pkg3]]
  • 一般利用公司域名导致作为包名;

www.baidu.com com.baidu.www baike wenda

(在Idea中创建com.baidu 包时不能自动创建子级包的情况

点击左边项目结构右上方的小齿轮, 取消勾选compact middle packlages选项)

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能
import packeage1[.package2...].(classname|*);
import java.util.Date; //导入java自身的包
import com.Xu.Operator.* //导入Operator下所有的文件

JavaDoc

  • JavaDoc命令是用来生成自己API文档的 (文档注释)
    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的JDK版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
package com.Xu.Operator;
// 加在类上面就是类的注释
/**
 * @author Xu
 * @version 1.0
 * @since 1.8
 */
public  class Doc{

    //加在方法上面就是类的注释
    String name;   //这是一个属性
    /**
     *
     * @param name   //param 参数的意思
     * @return
     * @throws Exception
     */

    public String test(String name) throws Exception{   //这是一个方法
        return name;

    }
}

CMD中命令符–生成JavaDoc文档

javadoc -encoding UTF-8 -charset UTF-8 Doc.java

中间的是防止中文乱码的参数

作业

用IDEA生成JavaDoc文档


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值