Java基础(上)笔记

注释

  • 平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目当项目结构一旦复杂起来,我们就需要注释了

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

  • 书写注释是一个非常好的习惯

  • 平时写代码一定要注意规范

  • Java中的注释有三种:1.单行注释

    2.多行注释

    3.文档注释

    操作代码:

public class HelloWorld {//注释
    
    public static void main(String[] args) {
        System.out.println("Hello,World!");
    }
    //单行注释
    //这是一个单行注释
    //多行注释
    /*这
    * 是
    * 一
    * 个
    * 多
    * 行
    * 注
    * 释*/
    //文本注释
    /**
     *
     */
}
  • Annotations 注解

    Comments 注释

标识符

  • 关键字

    abstractassertbooleanbreakbyte
    casecatchcharclassconst
    continuedefaultdodoubleelse
    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

  • 操作代码:

public class Demo01 {//标识符和关键字
    
    public static void main(String[] args) {
        String Ahello="Ashley";
        String hello="Ashley";
        String $hello="Ashley";
        String _hello="Ashley";
        String _$="Ashley";

        //错误示例
        //String 1hello="Ashley";
        //String #hello="Ashley"
        //String *hello="Ashley";
        //String class="hello";

        //标识符是大小写敏感的
        String Man="Xu";
        String man="Xu";
        //可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low
        String name="Ashley";
        String mingzi="Ashley";//不建议
        String 王者荣耀="王者";
        //String 王者荣耀="青铜";
        System.out.println(王者荣耀);



    }

}

数据类型

  • 强类型语言

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

  • 弱类型语言

    要求变量的使用要符合规定,不是那么严格

  • Java的数据类型分为两大类

    1.基本类型(primitive type)

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

    整数类型 short占2个字节范围:-32768-32767

    int占4个字节范围:-2147483648-2147483647

    数值类型 long占8个字节范围:-9223372036854775808-9223372036854775807

    浮点类型 float占4个字节

    double占8个字节(常用)

    字符类型char占2个字节

    boolean类型:占1位其值只有true和false两个

    • 操作代码:

public class Demo02 {//数据类型
    
    public static void main(String[] args) {
        //八大基本数据类型

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

        //小数:浮点数
        float num5=50.1F;//float类型要在数字后面加个F
        double num6=3.141592653589793238462643;

        //字符类型
        char name='颂';//只能写一个字符
        //字符串,String不是关键字,它是一个类
        //String namea="颂yy";

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


    }
}
  • 2.引用类型(reference type)

    分为:

    数组

    接口

什么是字节

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

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

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

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

  • 1bit表示1位

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

  • 1024B=1KB

  • 1024KB=1M

  • 1024M=1G

  • 1024G=1TB

数据类型扩展及面试题

  • 浮点数表示的字长是有限的,也是离散的,浮点数一般都存在舍入误差,由于很多数字都没有办法精确表示,所以结果只能是个大约数 接近但不等于

    最好完全避免使用浮点数进行比较

    使用BigDecimal,它是一个数学工具类

  • 所有的字符本质还是数字

  • char类型会涉及到编码问题

    Unicode编码可以处理各种语言文字,它占了2个字节,最多可以表示65536个字符 早些年大家都用Excel表格,它最长只有2的16次方=65536

    Unicode表:例如a=97,A=65,中=20013 U0000-UFFFF 例如:char c3='\u0061'; System.out.println(c3);//运行结果为a

  • 转义字符:

    1.\t 制表符(相当于空格)

System.out.println("北京\t上海\t广州\t深圳");//运行结果为:北京  上海  广州  深圳

       2.\n 换行符3.\\:输出\,“\”表示反斜杠,转译其他字符

System.out.println("Miss\n颂yy");
//运行结果为:
Miss
颂yy

       3.\\:输出\,“\”表示反斜杠,转译其他字符

System.out.println("\\");//运行结果为:\
System.out.println("C:\\Windows\\System64\\cmd.exe");
//运行结果为:C:\Windows\System64\cmd.exe

       4.\":输出一个"(双引号),单引号类似

System.out.println("\"");//运行结果为:"

       5.\r:表示一个回车,使光标回到当前行的行首。如果之前该行有内容,则会被覆盖;

System.out.println("颂yy\r哈喽");
//当使用\r回车时,光标会定到第一个字上,再输出“你好”就会覆盖前面的文字内容,运行结果为:哈喽y
//但在idea中测试的时候是直接把前面“颂yy”替换成后面的“哈喽”,应该和编译器有关

       \r 和 \n 一起使用时,回车加换行,就是把 “颂yy” 输出后,再换行输出 “哈喽”

System.out.println("颂yy\r\n哈喽");
//运行结果为:
颂yy
哈喽
  • 操作代码:

public class Demo03 {//数据类型扩展及面试题
    
    public static void main(String[] args) {
        
        /*整数拓展:
        * 进制
        * 二进制(以0b开头)
        * 十进制
        * 八进制(以0开头)
        * 十六进制(以0x开头)
        */
        int i=10;
        int i2=010;//八进制
        int i3=0x10;//十六进制(0-9 A-F 16)
        System.out.println(i);//运行结果为10
        System.out.println(i2);//运行结果为8
        System.out.println(i3);//运行结果为16
        System.out.println("==================================================================");
        

        //=================================================================================
        //浮点数拓展?    银行业务怎么表示? 钱
        //=================================================================================
        //float
        //double
        //例一
        float f=0.1f;
        double d=1.0/10;
        System.out.println(f==d);//用==来表示它们是否相等
        //运行结果为·false
        System.out.println(f);//运行结果为0.1
        System.out.println(d);//运行结果为0.1
        //例二
        float d1=23131313131313f;
        float d2=d1 + 1;
        System.out.println(d1==d2);//运行出来是true
        //两个例子说明浮点数是存在问题的,原因:
        //浮点数表示的字长是有限的,也是离散的,浮点数一般都存在舍入误差,由于很多数字都没有办法精确表示
        //所以结果只能是个大约数   接近但不等于
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        //使用BigDecimal,它是一个数学工具类
        System.out.println("==================================================================");
        

        //=====================================================================================
        //字符拓展
        //=====================================================================================
        
        char c1='a';
        char c2='中';
        System.out.println(c1);//运行结果为a
        System.out.println((int)c1);//强制转换//运行结果为97
        System.out.println(c2);//运行结果为中
        System.out.println((int)c2);//运行结果为20013
        //所有的字符本质还是数字
        //char类型会涉及到编码问题,Unicode编码可以处理各种语言文字,它占了2个字节,最多可以表示65536个字符
        //早些年大家都用Excel表格,它最长只有2的16次方=65536
        //Unicode表:例如a=97,A=65,中=20013
        //U0000-UFFFF
        char c3='\u0061';
        System.out.println(c3);//运行结果为a

        //转义字符
        //\t    制表符
        //\n    换行
        //.........
        System.out.println("Hello\tWorld!");//运行结果为Hello   World!
        System.out.println("Hello\nWorld!");
        System.out.println("==================================================================");
        /*运行结果为
        * Hello
        * World!*/

        //
        String sa=new String("hello world");
        String sb=new String("hello world");
        System.out.println(sa==sb);
        //运行结果为false
        String sc="hello world";
        String sd="hello world";
        System.out.println(sc==sd);
        //运行结果为true
        System.out.println("==================================================================");
        //对象  从内存分析

        
        //=====================================================================================
        //布尔值拓展
        //=====================================================================================
        boolean flag=true;
        if(flag==true){}//这两行代码是一样的:新手
        if (flag){}//这两行代码是一样的:老手
        //Less is more   代码要精简易读
    }
}

类型转换

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

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

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

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

  • 强制类型转换:(类型)+变量名 高---->低

  • 自动类型转换: 低---->高

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

    类型转换操作代码:

public class Demo04 {//类型转换
    
    public static void main(String[] args) {

        int i=128;
        byte b=(byte) i ;//强制类型转换
        //强制转换格式:(类型)变量名    高---->低
        System.out.println(i);//运行结果为128
        System.out.println(b);//运行结果为-128
        //byte  MAX_VALUE = 127;导致内存溢出
        System.out.println("======================================================");

        int a=128;
        double d=a;
        // 自动转换:  低---->高
        System.out.println(a);//运行结果为128
        System.out.println(d);//运行结果为128.0
        System.out.println("======================================================");

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

        char c='a';
        int e=c+1;
        System.out.println(e);//运行结果为98
        System.out.println((char)e);//int转char,运行结果为b
        System.out.println("======================================================");

        //操作比较大的时候,注意溢出问题
        //JDK新特性,数字之间可以用下划线分割,并且下划线不会被输出
        int money=10_0000_0000;
        System.out.println(money);//运行结果为100000000
        int years=20;
        int total=money*years;
        System.out.println(total);//运行结果为-1474836480,原因:计算的时候溢出了

        long total2=money*years;
        System.out.println(total2);//运行结果为-1474836480,原因:默认是int,转换成long之前已经存在问题了

        long total3=money*((long)years);//先把一个数转换成long,再进行计算,计算结果再转换成long就不会出错了
        System.out.println(total3);//运行结果为20000000000
    }
}

变量

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

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

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

type varName  [=value][{,varName[=value]}];
//数据类型 变量名 =值:可以使用逗号隔开来声明多个同类型变量
  • 注意事项:

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

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

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

操作代码:

public class Demo05 { //定义变量

    public static void main(String[] args) {
        //int a,b,c;不建议这样做
        //int a=1,b=2,c=3;不建议
        //程序可读性,定义变量
        int a=1;
        int b=2;
        int c=3;
        String name="Ashley";
        char x='X';
        double pi=3.14;


    }
}

变量作用域

public class Variable{
    static int allClicks=0;   //类变量
    String str="hello world"; //实例变量
    
    public void method(){
        int i =0;             //局部变量
    }
}
  • 类变量:static(从属于类)

public class Demo06 {
    static double salary =2500;//类变量  static(从属于类)
    public static void main(String[] args) {
        //类变量  static
        System.out.println(salary);//运行结果为2500.0
    }
}
  • 实例变量(在类里面,在方法的外面):从属于对象;如果不自行初始化,这个类型的默认值为 0(整数)或0.0(小数)或u0000(字符串);布尔值:默认是false;除了基本类型,其余的默认值都是null

public class Demo06 {
    String name;
    int age;
    public static void main(String[] args) {
     //变量类型 变量名字 = new Demo06();
        Demo06 demo06 = new Demo06();
        System.out.println(demo06.age);//运行结果为0
        System.out.println(demo06.name);//运行结果为null
    }
}
  • 局部变量(是在方法里的,即上面的“{”和下面的“}”之间):在使用之前必须声明和初始化值

public class Demo06 {
    public static void main(String[] args) {
        int i=10;
        System.out.println(i);
    }
}
  • 操作代码:

public class Demo06 {//变量作用域

    // 类变量  static(从属于类)
    static double salary =2500;
    //在类里面写代码,类里面除了方法,还有属性,属性:变量

    //实例变量(在类里面,在方法的外面):从属于对象;
    // 如果不自行初始化,这个类型的默认值为 0(整数)或0.0(小数)或u0000(字符串)
    //布尔值:默认是false
    //除了基本类型,其余的默认值都是null
    String name;
    int age;
    //main方法
    public static void main(String[] args) {
        //局部变量(是在方法里的,即上面的“{”和下面的“}”之间):在使用之前必须声明和初始化值
        int i=10;//局部变量:初始化值
        System.out.println(i);

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

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

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

    }
}

常量

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

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

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

操作代码:

public class Demo07 {//常量

    static final double PI=3.14;
    //static和final可以互换位置,因为它们是修饰符,不存在先后顺序(变量类型前面的都是修饰符,此处即double前面的static和final)
    public static void main(String[] args) {
        System.out.println(PI);
    }
}

变量的命名规范

  • 所有的变量、方法、类名:见名知意原则(切记:不要用拼音)

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

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

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

  • 类名:首字母大写和驼峰原则,例如:Man,GoodMan

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值