Day02Java基础语法

Java基础语法

注释

  • 平时我们编写代码,在代码量较少的时候,我们还是可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要注释了!
  • 注释不会被执行,是给写代码的人看的
  • 养成写注释的习惯!

java中的注释有三种:

  • 单行注释

  • //我是单行注释
    
  • 多行注释

  • /*
    我是多行注释
    */
    
  • 文档注释

  • /**
    * 我是文档注释
    * @Description Helloworld
    * @Author 周某某
    */
    

标识符

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

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z或者a-z),美元符($)、或者下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或者方法名
  • 常量的定义:全大写且可以用美元符($)、或者下划线(_)
  • 标识符是大小写敏感的
  • 可以使用中文命名,但一般不建议! 也不使用拼音,很Low!

访问控制修饰符

  • public:公共的 谁都可以访问
  • default:默认的,同一个包类可以访问
  • protected:受保护的 同一个包类,以及子类可以访问
  • private:私有的,只有自己本类可以访问

关键字

不能用关键字作为包名!

数据类型

  • 强类型语言:要求变量的使用严格符合规定,所有变量都必须先定义后才能使用

  • 弱类型语言

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

    • 基本类型

      • 数值类型
        • 整数类型:二进制 0b表示 八进制 0表示 十六进制 0x表示
          • byte : 占一个字节 范围:-128~127 2的七次方
          • short占两个字节范围:-32768~32767 2的15次方
          • int 占四个字节范围:-21亿~21亿 2的31次方
          • long占八个字节 2的63次方
        • 浮点类型:最好完全避免使用浮点数进行比较 可以使用BigDecimal的数学工具类
          • float 占四个字节
          • double 占八个字节
      • 字符类型 char 占两个字节
      • boolean类型 占一位 其值只有 true 和false
    • 引用类型

      • 接口
      • 数组
    • 八大基本类型的默认值

    • boolean false
      char ‘/uoooo’(null)
      byte (byte)0
      short (short)0
      int 0
      long 0L
      float 0.0f
      double 0.0d
      

什么是字节

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

类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换,由低到高,小数的优先级高于整数
    • byte,short,char->int->long->float->double
  • 运算中,不同类型的数据先转化为同一类型,然后再进行运算。
  • 强制类型转换
  • 自动类型转换
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!

变量

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

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

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

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

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
    • 变量名必须是合法的标识符。
    • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

变量作用域

  • 类变量 写在类里的变量 需要加个关键字 static 可以通过类名.变量名
  • 实例变量 在类里面实例化的变量 通过实例化才能调用
  • 局部变量 写在类下面的方法里的变量

变量的命名规范

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

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

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

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

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

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

//类变量 static  属于类的 跟随类生成 消失
//实例变量:从属于对象;如果不自行初始化,则会使用这个类型的默认值
//布尔值的默认值 是 :false
//除了基本类型 其余的默认值都是 null
//局部变量  必须声明和初始化值
// 是在方法里的;生命周期:从方法的括号开始  对应的括号结束
//常量 需要加上修饰符final 修饰符 不存在先后顺序

常量

  • 常量:初始化后不能在改变值!不会变动的值

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

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

运算符

  • 算术运算符:+,-,*,/,%,++,--
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instance of
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=

注意点

  • 整数运算 结果也是整数 只能取到整数部分 涉及到小数 需要转换为double
  • 有long类型的数据参与运算则返回的结果都是long类型的 如果没有则返回的一定是int
  • 关系运算符返回的结果: 正确 或者 错误 只能返回布尔值
  • a++ 是先参与运算 再 自增
  • ++a 是先自增 在参与运算

逻辑运算符位运算符

// 与(and) 或 (or )  非 (!)
boolean a = true ;
boolean b = false ;
// 短路:若a 一开始就是假 则 会直接返回结果 不会运行后面的b逻辑
System.out.println("a && b "+(a && b));//逻辑与(&&)运算 两个变量都为真 结果才为真
System.out.println("a || b "+(a || b)); //逻辑或(||)运算 两个变量有一个为真 , 则结果采薇真
System.out.println("!(a && b) "+!(a && b));//如果是真 结果则为假 如果是假 结果为真
 /*
          A = 0011 1100
          B = 0000 1101
          0000 0001
          0001 0000
			0000 1010
			0000 1000
			x = 0110 0100 100
			y = 0011 0010 50
		c = x&y = 0010 0000 32
         d=  x|y = 0111 0110 118
         d=  x^y = 0101 0110 86
         d=  c|y = 0011 0010 50
         d=  c^y = 0001 0010 18
           补码:1101 1111  取反+1
           源码  1010 0001
         d=  ~c  = 1010 0001 -33
           cc = ((x&y) > (x|y)) false
           dd = ((c|d)>(~d)) 1010 0001 -33 > 32 false
           dd&&cc false
           dd&&cc||!cc true
		
			
			1111 0101 这是原码
			1000 1011 取反 加1

        A&B = 0000 1100  只有当两个数都为1 的时候才为1
        A|B = 0011 1101  只要有一个数为1 则为1
        A^B = 0011 0001  ^(异或) 两个数相同则为0 不同则为1
        ~B  = 1111 0010  ~ 取反 1取0 0取1

        2*8怎么运算最快 》》2 * 2 * 2 * 2
        << 左移   相当于把数乘以*2
        >> 右移   相当于把数除以/2
        0000 0000       0
        0000 0001       1
        0000 0010       2
        0000 0100       4
        0000 1000       8
        0001 0000       16
        
        0000 1010
        0000 0010 2
        
        0000 1110
        0000 0011
        0000 1101
        
         */

         int a = 0b1010101;
         int b = 0b1111111;

        System.out.println(a&b);

        System.out.println(2<<3);

扩展赋值运算符 三元运算符

int a = 10;
int b = 20;
a+=b; //a= a+b;
a-=b; //a= a-b;
System.out.println(a);
//字符串连接符 + 加号两边只要有一方出现了字符串String类型的,就会把数据都变成String类型的
System.out.println(a+b);
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30  说明运算是从左到右


//x?y:z  x为真 输出y  否则输出z
        int score = 50;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type);

包机制

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

  • 包语句的语法格式为:

  • package pkg1[.pkg2[.pkg3……]]
    
  • 一般利用公司域名倒置作为包名

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

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

Java Doc

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

  • 参数信息

    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的jdk版本
    • param 参数名
    • return 返回值情况
    • throws 异常抛出情况
posted @   周某人的成神之路  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示