重学Java(Day1)

数据类型

强类型语言

强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。例如c++,java等都属于强类型语言。

弱类型语言

弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php,javascript等就属于弱类型语言。

Java语言类型

  • 基本数据类型
  • 引用数据类型

java 强类型和弱类型 java是弱类型语言吗_Java

浮点数拓展:银行业务怎么表示?钱

float double :有限 离散 舍入误差 接近但不等于

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

有一个数学工具类 BigDecimal

代码:

@Test
    public void test() {
        float f = 0.1f;  //0.1
        double d = 1.0 / 10;  //0.1

        System.out.println(f);
        System.out.println(d);
        System.out.println(f==d);  //false

        float f1 = 3234123512341235f;
        float f2 = f1+1;

        System.out.println(f1==f2);  //true
    }

运行结果:

java 强类型和弱类型 java是弱类型语言吗_强类型_02

字符拓展

代码:

@Test
    public void test2() {
        char c1 = 'A';
        char c2 = '张';

        System.out.println((int)c1);  //65 ASCII 码
        System.out.println((int)c2);
        System.out.println('\u0061');  //Unicode编码

    }

运行结果:

java 强类型和弱类型 java是弱类型语言吗_强类型_03

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

变量、常量、作用域

变量定义

定义格式:type varname [=value],即变量类型 变量名 [=变量值],

注意:

  1. Java是一种强类型语言,每一个变量都必须声明其类型,类型可以是基本类型,也可以是引用类型;
  2. 变量名必须是合法的标识符;
  3. 变量声明必须是一个完整的语句,以分号结束;

变量、作用域

Java有3种变量,分别如下:

  • 类变量:在类里面,方法外面用static修饰符声明的变量属于类变量
  • 全局变量:在类里面,方法外面声明的变量属于示例变量(又叫做成员变量、实例变量)
  • 局部变量:在方法里面声明的变量属于局部变量
public class Demo {
    static int num1 = 12; //类变量,用关键字static
    int num2 ;//实例变量
     public static void main(String[] args) {
        int num3 ;//局部变量
    }
}

说明:

1、类变量相对于全局变量,可以直接使用;

2、实例变量需要先引用类,才可以使用,如上述例子,要使用num2,需要先引用Demo这个类;

public class Demo {
    static int num1 = 12; //类变量,用关键字static
    int num2 ;//实例变量
     public static void main(String[] args) {
       int num3 ;//局部变量
       Demo demo = new Demo04();//使用实例变量,需要先引用类,从属于对象
       System.out.println(demo.num2);
    }
}

3、全局变量如果没有赋初值的话,那么计算机会给默认值,布尔类型默认值为false,String,Integer类型(引用数据类型)默认值为null,其他基本类型默认值为0。

Java常量

Java常量用关键字final来表示,格式为:final type varname = value;

final double PI = 3.1415926535;

常量被赋值后,在程序运行中不允许被改,常量命名一般都大写字母表示。

命名规范

  1. 类成员变量,首字母小写和驼峰原则,例如月工资,monthSalary;周平均温度,weekAverageTemp
  2. 局部变量,首字母小写和驼峰原则,同类成员变量命名规范一样
  3. 常量,大写字母和下划线,如最大值,MAX-VALUE
  4. 类名,首字母大写和驼峰原则,例如Man,GoodMan
  5. 方法名,首字母小写和驼峰原则,例如run(),runFirst()

Java运算符

算数运算符:+、-、*、/、%、++、--

  • ++
@Test
    public void test2() {
        int a = 2;
        int b = a++;  //可以理解为,先把a的值赋给b,a的值再+1
        System.out.println(b);  //结果2
        System.out.println(a);  //结果3
        int c = ++a;  //理解为a+1,然后c=a
        System.out.println(c);  //结果4
        System.out.println(a);  //结果4
    }
  • 幂运算
@Test
    public void test3() {
        //幂运算 2^3=8   需要使用工具类
        double a = Math.pow(2,3);
        System.out.println(a);  //结果 8.0
    }

赋值运算符:=

关系运算符:>,>=、<=、==、!=、instanceof

逻辑运算符:&& 、||、!

java 强类型和弱类型 java是弱类型语言吗_java 强类型和弱类型_04

& 与 && 的区别:& 和 | 左右两边的式子一定会执行(比较笨),&& 和 || 只要左边的式子能得出结果,右边的式子就不会执行(比较聪明)。

位运算符:&、|、^、~、<<、>>、>>>

java 强类型和弱类型 java是弱类型语言吗_强类型_05

12<<2 = 48

12的二进制是: 0000 1100

java 强类型和弱类型 java是弱类型语言吗_强类型_06

通过这个图我们可以看出来,所有的位全都向左移动两位,然后把右边空的两个位用0补上,最左边多出的两个位去掉,最后得到的结果就是00110000 结果就是48

条件运算符:?、:

扩展运算符+=、-=、*=、/=

x ? y : z
如果x为true,结果为y,如果x为false,结果为z

@Test
    public void test3() {
        int score = 50;
        System.out.println(score<60?"不及格":"及格");  //不及格
    }