java基础

注释

// 单行注释

/*多行注释
多行注释多行注释
多行注释
多行注释
*/

/**
* 文档注释
* @Description 描述
* @Author 作者
*/

// 补充:有趣的代码注释,百度搜索即可
/**
*                    _ooOoo_
*                   o8888888o
*                   88" . "88
*                   (| -_- |)
*                    O\ = /O
*                ____/`---'\____
*              .   ' \\| |// `.
*               / \\||| : |||// \
*             / _||||| -:- |||||- \
*               | | \\\ - /// | |
*             | \_| ''\---/'' | |
*              \ .-\__ `-` ___/-. /
*           ___`. .' /--.--\ `. . __
*        ."" '< `.___\_<|>_/___.' >'"".
*       | | : `- \`.;`\ _ /`;.`/ - ` : | |
*         \ \ `-. \_ __\ /__ _/ .-` / /
* ======`-.____`-.___\_____/___.-`____.-'======
*                    `=---='
*
* .............................................
*          佛祖保佑             day day up!
*/

标识符

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

关键字

标识符

注意点

  1. 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($),或者下划线(_)开始
  2. 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  3. 不能使用关键字作为变量名或方法名
  4. 标识符是大小写敏感的
  5. 合法标识符举例:age、$salary、_value、_1_value
  6. 非法标识符举例:123abc、-salary
  7. 补充:可以使用中文或拼音命名,但是不建议,很Low

数据类型

强类型语言(java、c等)

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

弱类型语言(javascript等)

Java的数据类型分为两大类

基本类型(primitive type)
数值类型
1.整数类型
  • byte 占1字节,范围-128~127
  • short 占2字节,范围-32768~32767
  • int 占4个字节,范围-2147483648~2147483647
  • long 占8个字节,范围-9223372036854775808~9223372036854775807
2.浮点类型
  • float 占4个字节
  • double 占8个字节
3.字符类型
  • char 占2个字节
boolean类型:占1位其值只有true和false
演示
public class PrimitiveType {
    public static void main(String[] args) {
        // 八大基本类型

        // 整数
        int num1 = 3;
        byte num2 = 127; // 范围-128~127
        short num3 = 123;
        long num4 = 23L; // long类型要在数字后添加L

        // 小数:浮点数
        float num5 = 50.2F; // float类型要在数字后添加F
        double num6 = 3.14123123123;

        // 字符
        char name1 = '中'; char name2 = 'a'; // char表示的是字符,定义的时候用单引号,只能存储一个字符
        //String name2 = "abc";
        /*
        1   char是表示的是字符,定义的时候用单引号,只能存储一个字符。例如; char='d'.
            而String表示的是字符串,定义的时候用双引号,可以存储一个或者多个字符。例如:String=“we  are neuer”。
        2   char是基本数据类型,而String是个类,属于引用数据类型。String类可以调用方法,具有面向对象的特征。
         */

        // 布尔值:是 非
        boolean flag = true;
        boolean flag2 = false;
    }
}

引用类型(reference type)
接口
数组

数据类型扩展

public class Demo03 {
    public static void main(String[] args) {
        // 整数扩展: 进制 二进制0b 八进制0 十进制 十六进制0x

        int i = 10; // 十进制
        int i2 = 0b10; // 二进制
        int i3 = 010; // 八进制 前面用0代表八进制
        int i4 = 0X10; // 十六进制 前面用0x代表十六进制

        /*
        二进制化为十进制 1*2^1 + 0*2^0 = 1*2 + 0*1 = 2 + 0 = 2
        八进制化为十进制 1*8^1 + 0*8^0 = 1*8 + 0*1 = 8 + 0 = 8
        十六进制化为十进制 1*16^1 + 0*16^0 = 1*16 + 0*1 = 16 + 0 = 16
         */
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);

        //--------------------------------------------------------------------

        // 浮点数扩展  银行业务里面钱怎么表示?
        // float有舍入误差,对于两个数精确比较,应该避免使用浮点数,使用BigDecimal(类)
        // 最好完全避免使用浮点数进行比较

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

        float d1 = 1231231233123f; // 大到超出范围
        double d2 = d1 +1;
        System.out.println(d1==d2); // 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(U0000~UFFFF)编码,一个字符对应编码表上的一个数值
        char c3 = '\u0097';
        System.out.println("asdas + " + c3);

        // 转义字符
        // \t 制表符
        // \n 换行
        // ...
        System.out.println("Hello\tWorld");
        System.out.println("Hello\nWorld");
    }
}


类型转换

public class Demo04 {
    public static void main(String[] args) {

        //byte、short、chat->int->long->float->double
        //强制转换 (类型)变量名  高到低
        //自动转换 低到高

        int i = 128;
        byte b = (byte) i;
        System.out.println(b);
        //解释:这里byte的范围是-128~127,当int转为byte类型时,i=128超出了byte的范围(内存溢出),所以结果变了(精度不准确)

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

        //案例:
        //因为高转低(float转int),以下内存溢出,精度丢失
        System.out.println((int)23.7); //23
        System.out.println((int)-45.12); //45

        //---------------------------------------------------------------
        /*
        操作比较大的数据时,注意溢出问题
        JDK7新特性,数字之间可以用下划线分割
         */
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;
        long total2 = money*years;
        System.out.println(total);// -1474836480,计算的时候溢出了
        System.out.println(total2);// -1474836480,先计算了money*years,这里已经出问题了,所以前面的long没有发挥想要的效果

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

运算符

  • 算数运算符:+、-、*、/、%(取余,也叫模运算)、++、–
  • 赋值运算符:=
  • 关系运算符:>、<、>=、<=、==、!=instanceof
  • 逻辑运算符:&&、||、!
  • 位运算符:&、|、^、~、>>、<<、>>>(了解即可)
  • 条件运算符:? :
  • 扩展赋值运算符:+=、-=、*=、/=

  1. 算数运算
public class Demo05 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a+b);// 3
        System.out.println(a-b);// -1
        System.out.println(a*b);// 2
        System.out.println(a/b);// 0。 为什么不是0.5?因为这里a、b都是int类型,得到的结果也是int类型,那么0.5向下取整就变成了0
        System.out.println(a/(double)b);// 1。 让一个数先转为浮点数先,那么int*double就得到double,那么就正常得到0.5

        long aa = 12312312123123L;
        short bb = 23;
        byte cc = 32;
        int dd = 321;
        float ee = 321.2F;
        System.out.println(aa+bb+cc+dd);// long 最高为long,所以结果变成long
        System.out.println(bb+cc+dd);// int byte与short相加都会得到int
        System.out.println(cc+dd);// int byte与short相加都会得到int
        System.out.println(ee+dd);// int byte与short相加都会得到int
        /*
        类型自动提升规则:
        a和b作某种运算
        a和b中有double,结果就是double
        a和b中有float,结果就是float
        a和b中有long,结果就是long
        除此之外,结果都是int
        把高字节转成低字节,需要作强制类型转换. byte c=(byte)a+b;
         */
        
    }
}

  1. 逻辑运算

由&&发现的新大陆:短路运算,如下:

public class Demo05 {
    public static void main(String[] args) {
        // 短路运算
        int c = 5;
        boolean d = (c<3)&&(c++<4);
        System.out.println(d);// false 因为c<3,则后面的就不执行了,即c++<4不会执行了
        System.out.println(c);// 5 因为c<3,则后面的就不执行了,即c++<4不会执行了,那么c++就没有+1,所以c还是5
    }
}


  1. 位运算
    A = 0011 1100
    B = 0000 1101

    与:A&B = 0000 1100
    或:A|B = 0011 1101
    异或:A^B = 0011 0001
    非:~B = 1111 0010


左移:2<<3;
2*8 = 2*2*2*2 = 16;

二进制                 十进制
0000 0000			0   
0000 0001			1   
0000 0010			2   
0000 0011			3   
0000 0100			4   
0000 1000			8   
0001 0000			16   

观察以上得知:
二进制计算使用位运算,效率极高!!

<<  代表 左移一位,相当于*2
>>  代表 右移一位,相当于/2
  1. 扩展:字符串连接符 +
public class Demo05 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a+b); // int 30
        System.out.println(""+a+b);// string 1020 当+号里面有string类型时,string的前面正常计算,后面的会变成拼接,所以结果为“”+“10”+“20”=1020
        System.out.println(a+b+"");// string 30 当+号里面有string类型时,string的前面正常计算,后面的会变成拼接,所以结果为30+“”=30 
    }
}

  1. 运算优先级
    优先级记忆方法:单目乘除为关系,逻辑三目后赋值。(前辈总结的)

    单目运算符:一次作用一个变量的运算符,又叫一元运算符
    单目:单目运算符+ –(正负数) ,++ –,!(逻辑非),~(按位取反)
    乘除:算数运算符:* / % + - (* / %优先级肯定是大于±的)
    为:位运算符:~(按位取反)<<(左移) >>(右移),^(也可以位运算,二进制异或)
    关系:关系运算符:> < >= <= == !=
    逻辑:逻辑运算符(除!)&& || & | ^
    三目:条件运算符A > B ? X : Y
    后:无意义,仅仅为了凑字数
    赋值:= += -= *= /= %= |= &= ^=
    说明:前优先级大于后,比如单目运算符也是位运算符,的优先级是单目级别的。至于赋值运算符中没有见过的自行测试

    所谓优先级,就是在表达式中的运算顺序。Java 中常用的运算符的优先级如下表所示:
    运算符优先级


包机制

  • 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
  • 包语句的语法格式为:package pkg1.pgk2.pkg3;

  • 一般利用公司域名倒置作为包名;如www.baidu.com => com.baidu.www
  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用“import”语句可完成此功能:import pkg1.pkg2.pkg3;

JavaDoc

  1. javadoc命令是用来生成自己的Api文档的
  2. 参数信息
  • @author 作者
  • @version 版本号
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况
  1. 导出方式
  • 命令行:javadoc -encoding UTF-8 -chatset UTF-8
  • idea:自行百度…

结束

以上是观看 狂神说Java 的视频记录下来的笔记。阅读者需要可到b站观看相关,感谢阅读!
狂神说Java链接地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值