Java学习1——Java基础语法

注释、标识符、关键字

注释

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

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

  • 书写注释是一个非常好的习惯,平时写代码一定要注意规范。

  • Java中的注释有三种:

    • 单行注释:可以注释单行文字,结构为:“// + 内容”

      //输出一个Hello world!
      System.out.println("Hello World!");
      
    • 多行注释:可以注释一段文字,结构为:“/* */”

      /* 多行注释
      * 123
      * 123
      * 123
      * 123 */
      
    • 文档注释:Java Doc,结构为:"/** */"

      /**
       * @Description HelloWorld
       * @Author 高旭,湖南大学
       * */
      

标识符

  • 关键字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gY3vhcY1-1638627758952)(C:\Users\HUAWEI\AppData\Roaming\Typora\typora-user-images\image-20211023134015164.png)]

  • Java 所有的组成部分需要名字、类名、变量名以及方法名都被称为标识符。
public String setTeacher(String TeacherName){
    String teacherName = TeacherName;
    return teacherName;
}
/* 变量名 --> teacherName
   方法名 --> setTeacher*/
  • 标识符注意点

    • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符“$”,下划线“_” 开始
    • 首字符之后可以是字母(A-Z 或者 a-z),美元符“$”,下划线“_” 或者数字的任何字符组合
    • 不能使用关键字作为变量名或方法名
    • 标识符是大小写敏感的
    String Man = "Gx";
    String man = "Gx";
    //这两个变量是完全不一样,因为Java标识符是大小写敏感的
    
    • 合法标识符举例:age、$salary、_value、__1_value
    • 非法标识符举例:123abc、-salary、#abc
    public static void main(String[] args) {
        String 老师 = "Gx"
        System.out.println(老师);
    }
    
    • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low!

数据类型

  • 强类型语言

    • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。 example:Java、c++
  • 弱类型语言

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

    • 基本类型(primitive type)

      • 整数类型:byte占1个字节,范围:-128 ~ 127

        ​ short占2个字节,范围:-32768 ~ 32767

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

        ​ long占8个字节,范围: -9223372036854775808 ~ 9223372036854775807

        //整数类型
        byte num1 = 10;
        short num2 = 30;
        int num3 = 500;		//最常用
        long num4 = 30L;	//long类型要在数字后面加个L
        
        //浮点数类型
        float num5 = 50.1F;	//float类型要在数字后加个F,不然会报错,让你改为double类型
        double num6 = 3.1415926;
        
        //字符类型
        char name = 'A';
        //字符串,String不是关键字,它是一个类
        String name1 = "gaox";
        
        //boolean,布尔值
        boolean flag = true;
        boolean flag = false;
        
      • 浮点类型:单精度float占4个字节、双精度double占8个字节

      • 字符类型 char:占2个字节

      • Boolean类型:占1位,其值只有true和false


    • 补充:什么是字节?

      • 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数
      • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写的 B 来表示
      • 1B(byte,字节)= 8bit(位)
      • 字符:是指计算机中使用的字母、数字、字、和符号
      // 1bit表示1位
      // 1byte 表示一个字节 
      1B = 8bit
      1024B = 1KB
      1024KB = 1M
      1024M = 1G
      1024GB = 1TB
      
      • 特别注意:用一个数的不同进制的表示是完全相同的,例如15=0xf0b1111

      思考:电脑的32位和64位的区别是什么呢?

      答:32位操作系统只能用32位的CPU,而64位的操作系统既可以用64位的CPU,也可以用32位的CPU;他们的寻址能力也不相同,32位的电脑有4GB内存,而64位有128GB+内存


    • 引用类型(reference type)

      • 引用类型的变量类似于C语言的指针,他内存存储一个地址,指向某个对象所在的内存的位置(后续会详细介绍)

        • 接口

        • 数组

        • var关键字

          • 有些时候,类型的名字太长,写起来比较麻烦。例如:
          StringBuilder sb = new StringBuilder();
          

          这个时候,如果想省略变量类型,可以使用var关键字:

          var sb = new StringBuilder();
          

          编译器会根据赋值语句自动推断出变量sb的类型是StringBuilder。对编译器来说,语句:

          var sb = new StringBuilder();
          

          实际上会自动变成:

          StringBuilder sb = new StringBuilder();
          

          因此,使用var定义变量,仅仅是少写了变量类型而已。

类型转换

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

    低 ———————————————————————高

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

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

  • 强制类型转换:格式为:(类型)变量名 ;适用情况: 由高到低转变

    int i = 34;
    byte b = (byte)i;	//强制类型转换
    
  • 自动类型转换: 自动转换;使用情况: 由低到高转变

    int i = 34;
    double b = i;	//自动转换
    
  • 注意点

    • 不能对布尔值进行转换

    • 不能把对象类型转换为不相干的类型

    • 在把高容量转换到低容量的时候,用强制转换

    • 转换的时候可能存在内存溢出,或者精度问题

      int money = 1000000000;
      int years = 20;
      int total = money * years; 	//结果为-1474836480,计算的时候溢出了
      long total1 = money * years;	//结果还是-1474836480,money和years都是int,所以在转换之前就已经出错了
      
      //正确的转换方式
      long total2 = money * ((long)years);	//结果为20000000000
      

变量、常量

变量

  • 变量就是可以变化的量,在内存中开辟一块空间

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

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

    type varname [= value];
    //格式为:数据类型 变量名 = 值;
    
  • 注意事项:

    • 每个变量都有类型,类型可以是基本类型(int,double…)也可以是引用类型(String,…)
    • 变量名必须是合法的标识符
    • 变量声名是一条完整的语句,因此每一个声名都必须以分号结束
pubilc class Demo1 {
	//类变量	static 关键字
	static double salary = 2500.00;
	
	//实例变量:从属于对象,如果初始化,则会返回其对应的默认值
	//int 默认为0;double 默认值为0.00
	//布尔值 默认值为false
	//除了基本类型外,其余的默认值都为NULL
	String name;
	int age;

	public static void main(String[] args){
		//局部变量;必须声名和初始化
        int i = 10;
        
        //创建类的对象
        Demo1 demo = new Demo1();
        demo.age = 10;
        demo.name = "Gx"; 
    }
}

变量的作用范围

在Java中,多行语句用{ }括起来。很多控制语句,例如条件判断和循环,都以{ }作为它们自身的范围,例如:

if (...) { // if开始
    ...
    while (...) { // while 开始
        ...
        if (...) { // if开始
            ...
        } // if结束
        ...
    } // while结束
    ...
} // if结束

只要正确地嵌套这些{ },编译器就能识别出语句块的开始和结束。而在语句块中定义的变量,它有一个作用域,就是从定义处开始,到语句块结束。**超出了作用域引用这些变量,编译器会报错!!!**举个例子:

{
    ...
    int i = 0; // 变量i从这里开始定义
    ...
    {
        ...
        int x = 1; // 变量x从这里开始定义
        ...
        {
            ...
            String s = "hello"; // 变量s从这里开始定义
            ...
        } // 变量s作用域到此结束
        ...
        // 注意,这是一个新的变量s,它和上面的变量同名,
        // 但是因为作用域不同,它们是两个不同的变量:
        String s = "hi";
        ...
    } // 变量x和s作用域到此结束
    ...
} // 变量i作用域到此结束

定义变量时,要遵循作用域最小化原则,尽量将变量定义在尽可能小的作用域,并且,不要重复使用变量名

补充:变量命名规范

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

常量

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

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

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

    //格式为	final 数据类型 常量名 = 值;
    final double PI = 3.14;
    

运算符

Java语言支持如下运算符:

  • 算术运算符:+,-,*,/,%,++,–
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!= instanceof(面向对象时用)
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>(了解!!!>)
  • 条件运算符:?,:(了解!!!>)
  • 扩展赋值运算符:+=,-=,*=,/= (了解!!!>)
b = a++;	//a++  执行完这行代码后,先给b赋值,再自增
b = ++a;	//++a  执行这行代码前,先自增,再给b赋值

//很多运算可以用一些工具类来操作
Math 类
    
a && b;		//两个都为真,结果才是真
a || b;		//两个其中有一个真,则结果才为真

/**
	位运算符
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 << 3 = 16;		//左移相当于 * 2
8 >> 2 = 2;			//右移相当与 / 2
    
//字符串连接符   + 
int a = 10;
int b = 10;
System.out.println("" + a + b);	//输出1020,""在前方,按照字符串的形式加
System.out.println(a + b + "");	//输出20,""在后方,直接按int型加

//三元运算符
// x ? y : z
int score = 50;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);	//输出不及格

运算注意点

  • 整数运算

    • 整数的数值表示不但使精确的,而且整数运算永远是精确的,即使除法也是精确的,因为两个整数相除只能得到结果的整数部分

    特别注意!!!!!

    1. 整数的除法对于除数为0的情况,编译时不会报错,但是运行时会报错!!!
    2. 由于整数存在范围限制(上面笔记有),如果计算超过了范围,就会产生溢出,但是溢出不会出错,但却使得到的结果变得十分奇怪,如:两个正数相加,得到“-2147483641”
  • 浮点数运算

    • 浮点数只能做加减乘除这些数值运算,不能做位运算和移位运算
    • 浮点数虽然表述范围大,但是,浮点数有个非常非常重要的特点:浮点数常常无法精确表述
      • 举个例子:浮点数 0.1 在计算机中无法精确表示,因为十进制的0.1换算成二进制是一个无限循环小数,很显然,无论使用float还是double 都只能存储一个0.1 的近似值
  • 布尔运算

    • 对于布尔类型,永远只有truefalse两个值。
    • 布尔运算是一种关系运算,包括以下几类:
      • 比较运算符:> >= < <= == !=
      • 与运算:&&
      • 或运算:||
      • 非运算:!
  • 运算符号的优先级

    • ()

    • ! ~ ++ --

    • * / %

    • + -

    • << >> >>>

    • &

    • |

    • += -= *= /=

    • 记不住也没关系,括号yyds!!!

  • 字符和字符串

    • 字符

      • 字符类型char是基本数据类型,他是chatacter的缩写,一个char保存一个Unicode字符
      • java内存中总是使用Unicode表示字符,所以,一个英文字符和一个中文字符都用一个char类型表示,而要显示一个字符的Unicode,只需要将char类型直接赋值给int类型就好
      int n1 = 'A'; // 字母“A”的Unicodde编码是65
      int n2 = '中'; // 汉字“中”的Unicode编码是20013
      

包机制、Java Doc

包机制

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

  • 包语句的语法格式为:

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

Java Doc

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

  • 参数信息

    • @author 作者名
    • @version 版本号
    • @since 知名需要最早使用的jdk版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值