数据类型的拓展
public class Demo03{ public static void main(String[]args){ //整数的拓展: 进制 二进制0b 十进制 八进制0 十六进制0x int i = 10; int i2 = 010;//八进制0 int i3 = 0x10;//十六进制0x 0~9 A~F(16) System.out.println(i) System.out.println(i2) System.out.println(i3) ================================================= //浮点数拓展: //float:有限 离散 舍入误差 大约 接近但不等于 //double float f = 0.1f;//0.1 double d = 1.0/10;//0.1 System.out.println(f==d);//false float d1 = 2313131231312312313f float d2 = d1 + 1 System.out.println(d1==d2);//true ================================================= //字符拓展 System.out.println("========================="); char c1 = 'A' char c2 = '中' System.out.println(c1); System.out.println((int)c1);//强制换行 System.out.println(c2); System.out.println((int)c2);//强制换行 //1.所有的字符本质还是数字 2.编码Unicode表:占了两个字节,可以表示65536字符(a=97,A=65) //转义字符 //\t 制符表 //\n 换行 //...... System.out.println("Hello\nWorld"); System.out.println("========================") String sa = new String(original:"hello world"); String sb = new String(original:"hello world"); System.out.println(sa==sb); String sc = "hello world"; String sd = "hello world"; System.out.println(sc==sd); //对象 从内部分析 =============================================== //布尔值拓展 boolean flag = true; if(flag==true){}//新手 if (flag){}//老手 //代码要精简易读 } }
类型转换
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换
运算中,不同的类型的数据先转换为同一个类型,然后再进行运算
类型转换分为:强制类型转换和自动类型转换
public class Demo05{ public static voidnmain (String[] arge){ int i =128; byte b = (byte)i;//内存溢出 //强制转换 (类型)变量名 高--低 //自动转换 (类型)变量名 高--低 System.out.println(i) System.out.println(b) /* 注: 1.不能对布尔值进行转换 2.不能把对象类型转换成不相干的类型 3.在把高容量转换成低容量的时候,强制转换 4.转换的时候可能存在内存溢出,或者精度问题 */ System.out.println("=========================") System.out.println((int)23.7);//23 System.out.println((int)-45.89);//-45 System.out.println("=========================") char c = 'a' int d = c+1; System.out.println(d); System.out.println((char)d); /* 注: 1.操作比较大的数的时候,注意溢出问题 2.但JDK7的新特性,数字之间可以用下划线分割(如下操作) */ int money = 10_0000_0000; int years = 20; int total = money*years;//-1474836480,计算溢出 long total2 = money*years;//默认是int,转换之前就出现问题了 long total3 = money*((long)years);//先把数转换成long System.out.println(total3); } }
变量,常量,作用域
变量
顾名思义可以变化的量
Java是个强类型语言,因此每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注:1.每个变量都有类型,类型可以是基本的类型,也可以是引用的类型 2.变量名必须是合法的标识符 3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class Demo07{ public static void main (String[] args) //int a,b,c int a = 1; int b = 2; int c = 3;//一定要让程序具有可读性 String name = "小郑"; char x = 'x'; double pi = 3.14; }
变量作用域
类变量(注意关键词"static") 实例变量(正常的) 局部变量(在方法里的)
public class Demo08{ //属性:变量 //类变量 static static double salary = 2500; //实例变量:从属于对象;如果不自行初始化,这个类型的默认值0 0.0 //布尔值:默认是false //除了基本类型,其余的默认值都是null String name; int age; //main 方法 public static void main(String[]args){ //局部变量:必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名字 = nwm Demo08() Demo08 demo08 = new Demo08(); System.out.println(Demo08.age); System.out.println(Demo08.name); //static System.out.println(salary) } //其他方法 public void add(){ } }
常量
是指初始化后不能再改变的值(不会变的数)
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
常量名一般使用大写字符
final // final是修饰符(不存在先后顺序)常量名 = 值 final double PI = 3.14; ======================================================= public class Demo09{ static final double PI = 3.14; public static void main (String[] args){ System.out.println(PI) } }
注:1.所有的变量,方法,类名都是见面知意 2.类成员变量:首字母小学和驼峰原则:monthSalary 3.局部变量:首字母小写和驼峰原则 4.常量:大写字母和下划线:MAX_VALUE 5.类名:首字母大写和驼峰原则:Man,GoodMan 6.方法名:首字母小写和驼峰原则:run(),runRun()