Java基础语法

注释

注释在Java中有单行注释、多行注释、文档注释

  1. 单行注释 //
  2. 多行注释 /**/
  3. 文档注释

标识符

标识符命名的规则:

  1. 必须使用字母、下划线(_)、和美元符($)进行开头
  2. 除第一个元素后剩余组成可以是字母、下划线、美元符号的组合
  3. 严格区分大小写
  4. 不可与关键字重名

数据类型

Java中的数据类型属于强数据类型,必须先定义后使用
Java中的数据类型分为了两种:基本数据类型和引用数据类型

基本数值类型分为:数值类型和boolean类型
数值类型:

  • 整数类型
  1. byte 1个字节
  2. short 2个字节
  3. int 4个字节
  4. long 8个字节
  • 小数类型
  1. float 4个字节
  2. double 8个字节

boolean类型:
true 和 false 占1位

引用数据类型

  1. 接口
  2. 数组

数据类型拓展(面试)

1 进制问题

public class Demo01 {
    public static void main(String[] args) {
        int s1 = 10;
        int s2 = 010;
        int s3 = 0x10;
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

输出结果如下:
请添加图片描述
解析:八进制是以0开头的,而十六进制是以0x开头的,往十进制去换算时,八进制010就是0x8的0次方加上1x8的1次方,十六进制同上。

2 浮点数问题

public class Demo01 {

    public static void main(String[] args) {
        float x1 = 0.1f;
        float x2 = 1/10;
        System.out.println(x1==x2);

        x1 = 1212122212;
        x2 = x1 + 1;
        System.out.println(x1 == x2);
    }
}

输出结果
请添加图片描述
因此,浮点数具有舍入误差,是离散的,所以不可以用来比大小!!!

3 字符问题

public class Demo01 {

    public static void main(String[] args) {
      char s1 = 'a';
      char s2 = 'A';
        System.out.println(s1);
        //使用强制转换 将S1转换成整数类型
        System.out.println((int)s1);
        System.out.println(s2);
        System.out.println((int)s2);
    }
}

输出结果
请添加图片描述
字符的本质还是整形!!!

转义字符:如**\t表示制表符,如\n**代表换行等等

类型转换

类型转换分为了自动类型转换强制类型转换

  • 自动类型转换
    精度由低->高,可以实现自动转换
public class Demo02 {
    public static void main(String[] args) {
        int i = 12;
        float j =0.4f;
        System.out.println(i+j);
        //计算时,i是int型,j是浮点型,则i先由低精度转换成高精度浮点型后再与j进行计算
    }
}

但是会产生内存溢出等问题

public class Demo02 {
    public static void main(String[] args) {
        int e = 128;
        byte ai = (byte)e;
        System.out.println(e);
        System.out.println(ai);
    //明显的内存溢出问题 因为高转低,且byte最多存到127
    }
}

输出结果:
128
-128

  • 强制类型转换
    强制类型转换一般是由高精度像低精度去转换,可能会存在精度缺失的问题
public class Demo02 {
    public static void main(String[] args) {
        float a = 1.0f;
        float b = 2.3f;
        System.out.println((int)(a+b));
        //强制类型转换 高->低 对应问题:精度损失
    }
}
  • 低精度->高精度
    byte,short,char->int->long->float->double
  • 操作大数值数时需要注意的问题
public class Demo02 {
    public static void main(String[] args) {
        int money = 10_0000_0000;
        int years = 20;
        long total1 = money * years;
        long total = money * (long)years;
        /*
        long total = money * years;
        这样的语句则无法执行,原因是虽然total用的是long类型
        但是money乘years已经计算,且money与years均是int型
        计算后int已经存不下了,所以会出错
        */
        System.out.println(total1);
        System.out.println(total);
    }
}

输出结果:
请添加图片描述
这个例子其实就反映了计算机在执行语句时的一些细节,比如运算时,两个变量间先运算后,再去赋给定义的变量,但是两个int运算时就已经出了问题,所以会出现错误,可以多运行几次这个demo

变量

  • 局部变量
  • 实例变量
  • 类变量

常量

使用final关键字进行限定,比如final double pi = 3.14

  • 常见命名规范
    请添加图片描述

运算符

请添加图片描述
主要掌握这些,剩下的位运算符了解即可

  • 自增自减运算符
public class Demo01 {
    public static void main(String[] args) {
        //自增自减运算符
        int a = 1;
        System.out.println(a);
        int b = a++;
        System.out.println(b);
        int c = ++a;
        System.out.println(c);
        //a++与++a的区别,主要就是去看变量的位置
        //a在前面,则先赋值后自增
        //a在后面,则自增后赋值
    }
}
输出结果:
1
1
3
  • 逻辑运算符与位运算符
    逻辑运算符
public class Demo02 {
    public static void main(String[] args) {
        int i = 4;
        boolean a = true;
        boolean b = false;
        //&& 两个都为真才是真
        System.out.println("a&&b:" + (a&&b));
        //|| 一个为真就是真
        System.out.println("a||b:" + (a||b));

        System.out.println("a!=b:" + (a!=b));
        //短路问题
        int c = 4;
        boolean d = (c<3)&&(c++>3);
        //短路问题就是这个逻辑并前面是假的,则后面就不执行了
        System.out.println(c);
    }
}

位运算符

public class Demo03 {
    public static void main(String[] args) {
        System.out.println(2<<3);
    }
    //位运算符
    /*
    面试常考的点:
    比如怎么更快的实现2*8?
    位操作中左移一位相当于*2,右移一位相当于/2
    左移<<  右移>>
    0000 0000 0
    0000 0001 1
    0000 0010 2
    0000 0011 3
    0000 0100 4
    0000 1000 8
    位运算面向于底层,使用二进制,因此计算效率更高
     */

}

字符串拼接问题

public class Demo04 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //a+=b  a=a+b
        //a-=b  a=a-b
        System.out.println(a+b);
        System.out.println(""+a+b);
        System.out.println(a+b+"");
        /*
        结果是1020与30的内涵在于:
       ""号在前面,则计算机默认是字符串拼接操作
        ""号在后面,计算机先进行计算了,后进行字符串拼接
         */
    }
}

三元运算符

public class Demo05 {
    public static void main(String[] args) {
        int a = 40;
        String type = a<60?"不及格":"及格";
        System.out.println(type);
    }
}

包机制

请添加图片描述

javadoc文档

即可生成类文档,也可生成方法文档
请添加图片描述

package com.kuang.operater;

/**
 * @author liyuang
 * @version 1.0
 * @sicne 1.8
 */
public class Demo01 {
    String name;

    /**
     *
     * @param name
     * @return
     */
    public String test(String name){
        return name;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值