- 从键盘读取数据` 读取int类型:nextInt()方法; 读取double类型:nextDouble()方法; 读取整行文本数据:nextLine()方法; 如果输入的数据与要获得的数据不匹配,会产生InputMismatchException运行是异常。
Scanner input = new Scanner(System.in); double radius = input.nextDouble();- 变量赋值 可以一次给多个变量赋值
d1 = d2 = 0.021;//正确- 标识符 开头:字母、下划线(_)、美元符($) 其后:字母、下划线、美元符或数字 (长度没有限制) 方法: PascalCase帕斯卡拼写法:将命名的所有单词首字母大写,直接连接,单词直接没有连接符; camelCase骆驼拼写法:第一个字母首字母小写;
- 基本数据类型
- 字面值 某种类型值的表示形式,如100是int类型的字面值
- Java的整型字面量的4种表示方法
十进制数,如0、257;二进制数,以0b或0B开头的数(0B001101010表示十进制42);八进制数,以0开头的数(0124表示十进制84);十六进制数,以0x或0X开头的数(0X124表示十进制292)。- 浮点类型
浮点型字面值默认是double型数据,如果是表示float型字面值数据,必须在后面加上F或f。float和double在内存里的存储结构 从左到右是低位到高位,而计算机内部存储是采用逆序的溢出:浮点数运算结果可能溢出,但不会因溢出而导致异常。如果下溢,则结果为0;如果上溢,结果为正无穷大(显示为Infinity或-Infinity)。若出现没有数学意义的结果,则用NaN(Not a Number)表示。浮点数计算可能存在舍入误差,不适合做财务计算。 System.out.println(2.0-1.1);//结果为0.899999999999999结果不是期望的0.9。
在Java中如果一个数值字面值太长,读起来会比较麻烦,可以使用下画线将数字分组,增强代码的可读性。下划线可以在浮点数或整型数的表示中。(下划线不能放在数值的最前面和最后面,也不能放在浮点数的小数点前后) long s=210703_19901012_2415l//表示身份证号 float f=3.14_15F//表示浮点数- 字符类型 字符是程序中可以出现的任何单个符号。字符在计算机内部是由一组0和1的序列表示的。将字符转化为其二进制表示的过程称为编码,Java使用的是Unicode(统一码)。
常见的转移字符
- 布尔类型
boolean只有两个值false和true。Java语言的布尔类型数据不能与数值数据相互转换。false和true不对应于0和非0的整数值。b = ch1 == ch2;将ch1和ch2比较的结果赋给变量b。- 字符串类型
一个字符串字面值不能分成两行来写。 String s="One little,two little, three little."; //编译错误 对于较长的字符串可以使用加号将两个字符串连接。 String s1="One little,two little" + ",three little.";//编译正确 可以将String类型和一个基本类型或另一个对象连接在一起。 int age=25; System.out.println("my name is"+age);//正确- 运算符(容易忽略的细节)
除法运算(/),如果两个操作数都是整数,商为整数,如5/2=2,5.0/2=2.5。
求余运算(%),操作数可以为整数,也可以为浮点数,如7%4=3,10.5%0.5=0.5。
求余运算当操作数含有负数时,规则为余数的符号与被除数相同且余数的绝对值小于除数的绝对值(可以这么运算:先去掉符号,在计算结果,结果的符号取被除数的符号),如10%3=1,10%-3=1,-10%3=-1,-10%-3=-1.
自增和自减运算主要用于对变量的操作。也可用于浮点型变量。 5.“&&”和“||”为短路运算符,而“&”和“|”为非短路运算符。“&&”当左面操作数的值为false时,整个表达式为false,程序不会运行右面的表达式。同样“||”当左面的操作数值为true时,整个表达式为true,程序不会运行右面的表达式。
赋值运算必须类型兼容的,即左边的变量必须能够接受右边的表达式的值,否则会产生编译错。
int j=3.14;//Type mismatch:cannot convert double to int(类型不匹配) 11个复合赋值运算符:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=。位运算是在整数的二进制位上进行的运算。包括位逻辑运算和位移运算。位运算两个操作数宽度(位数)不同,在进行按位运算是要进行扩展。 若为正,高位用0扩展,若为负,高位用1扩展。左移运算符(<<)用来将一个整数的二进制位序列左移若干位。移出的高位丢弃,右边添0. 7左移2位结果W为28,相当于乘4.右移运算符(>>)用来将一个整数的二进制位序列右移若干位。移出的低位丢弃,若为整数,移入的高位添0,;若为负数,移入的高位添1。无符号右移运算符 (>>>)也是将一个整数的二进制位序列右移若干位,不论是整数还是负数左边一律移入0。结合性:指对某个运算符构成的表达式,计算时如果先取运算符左边的操作数后取右边运算符,则该运算符是左结合的。反之亦然,右结合为先取右边的操作数,后取左边的操作数。运算符不用死记硬背,收藏这张图,遇到优先级问题时就查一下,用的时间多了就自然而然地记住了
- 数据类型转换
自动类型转换(加宽转换) 布尔类型数据不能与其他任何类型的数据相互转换。强制类型转换 double d=200.5; byte b=(byte)d;//将double型值强制类型转换成bute型值 System.out.println(b);转换过程:先把d截取小数部分转换成整数,但转换成的整数也超出了byte型数据的范围,因此最后止得到该整数的低8位。
表达式中类型自动提升(加分点) byte a=40; byte b=50; byte c=a+b;//编译错误 c=(byte)(a+b);//正确在计算表达式a+b时,编译器是首先将操作数类型提升为int类型,最终计算出a+b的结果90是int类型,如果要将计算结果赋给c,必须使用强制类型转换,这就是所谓的表达式类型的提升。 自动类型转换和强制类型转换也发生在对象中,对象的强制类型转换也使用括号实现。
