java程序设计基础(二)

java程序设计基础(二)

浮点型在这里插入图片描述

浮点数在计算机中使用科学计数法表示。E38=1038 以此类推。

float是4个字节32位,在计算机中存储为1位符号位、8位指数位、23位尾数位。
double是8个字节64位,在计算机中存储为1位符号位、11位指数位、52位尾数位。
float的有效位数是7-8位,double的有效位数是15。
一个浮点数(小数)的字面值的默认类型是double,如果想要表示某一个小数值是float,需要在后面加上F或f
如果想要表示某个小数值是double,可以在值的后面加D或d,不加默认是double

package Third;
public class third {
public static void main(String[] args) {
System.out.println(Float.MAX_VALUE);
System.out.println(Float.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
}
}  //用于测试float ,double的最大和最小值

字符型

package Third;
public class third {
public static void main(String[] args) {
char c = 'a';// 将字符a转换为97来存储
System.out.println(c);// a
// 取出c中保存的字符a,强制转换为int
// 对于变量c的类型,以及c中保存的字符没有任何影响
int i = (int) c;
System.out.println(i);// 97
System.out.println(c);// a
// 将65强制转换为char
char d = (char) 65;
System.out.println(d);// A
char e = '1';
System.out.println((int) e);// 49
}
}

一个字符char需要两个字节来存储。
字符必须使用单引号。
由于计算机中只能存放二进制数字,字符必须要进行编码转换为数字来存储,例如字符‘a’将被编码为数字97,字符‘A’将被编码为数字65.编码方式描述了字符和数字的对应规则。ASCII码表,美国的标准,不能处理中文和其他国家的字符。西欧的使用ISO-8859-1,俄罗斯使用KOI-8,中国使用GB2312和GBK,unicode编码和utf-8。
如果一份文档只有一种语言,那么没有问题。如果一份文档既有俄语又有中文,现有的字符集就无法正确处理。
因此就出现了unicode编码。unicode涵盖了目前人类使用的所有字符,并为每个字符进行统一编码。
unicode只是定义了一个庞大的,全球通用的字符集,并且为每一个字符规定了唯一确定的编号。具体存储成什么样的字节,取决于字符编码方案。目前最为流行的unicode编码方案是UTF-8。

数据类型的转换

可以将一种类型的数据转换为另外一种类型的数据,这叫做数据类型转换。类型转换分为两种:隐式的类型转换和强制类型转换隐式的类型转换
小容量可以转换为大容量(系统自动完成的),byte,short,char—>int—>long—>float—>double

boolean不与其他任意数据类型转换
package Third;
public class third {
public static void main(String[] args) {
byte b1 = 25;
int b2 = b1;
char b3 = 'a';
int b4 = b3;
short b5 = 30;
int b6 = b5;
int b7 = 10;
long b8 = b7;
int b9 = 10;
float b10 = b9;
System.out.println(b10);//10.0
float b11 = 1.2f;
int b12 = (int) b11;
System.out.println(b12);//1,丢弃小数部分
long b13 = 9223372036854775807L;//9.223372036854775807E18
float b14 = b13;
System.out.println(b14);//9.223372E18,有效数丢失,精度丢失了
double b15 = b13;
System.out.println(b15);//9.223372036854776E18,有效数丢失,精度丢失了
}
}

byte,short,char三者不进行运算,若运算都将升级为int再做运算。

package Third ;
public class third {
public static void main(String[] args) {
// byte,short,char三者不进行运算,若运算都将升级为int再做运算。
byte a = 1;
short b = 2;
// a+b的结果是int类型
short c = (short) (a + b);
System.out.println(c);
}
}

boolean不与其他任意数据类型转换

package Third;
public class third {
public static void main(String[] args) {
int a = 1;
boolean b = true;
// System.out.println(a + b);//编译错误
}
}

任何数据类型与String之间使用+运算符,都将自动连接为String类型

package Third;
public class third {
public static void main(String[] args) {
int num = 10;
String a = "我";
String b = "岁";
System.out.println(a + num + b);// "我10岁"
System.out.println(a + num + 1 + b);// "我101岁"
System.out.println(a + (num + 1) + b);// "我11岁"
System.out.println(num + 1 + a + 1 + b);//"11我1岁"
}
}

强制类型转换

大容量转小容量,需要使用强制符()
如果存储数据需要的字节不够,就会发生数据丢失

package Third;
public class third {
public static void main(String[] args) {
long n1 = 1689;
//强制类型转换
int n2 = (int) n1;
System.out.println(n2);
//如果容量不够,就会发生数据丢失
long n3 = 9223372036854775807L;
int n4 = (int) n3;
System.out.println(n4);//-1
//强制类型转换,小数部分被丢弃
int x = (int) 35.35;
System.out.println(x);//35
}
}

算术运算符

//加减乘除,+-*/

    package day05;
    public class Day059 {
    public static void main(String[] args) {
   int a = 5;
   a += 5;// a = a + 5;
   System.out.println(a);// 10
   a *= 10;// a = a * 10;
   System.out.println(a);// 100
   a -= 5;// a = a - 5;
   System.out.println(a);// 95
   a /= 5;// a = a / 5;
   System.out.println(a);// 19
// 取模(求余数)%
   System.out.println(17 % 4);//1
//+作为单目运算符时表示正数
   int b = +2;
   System.out.println(b);
//-作为单目运算符时表示负数
   int c = -2;
  System.out.println(c);
}
}

自增自减运算符

package Third;
public class third {
public static void main(String[] args) {
int x = 3;
x++;// x = x + 1;
System.out.println(x);// 4
x--;// x = x - 1;
System.out.println(x);// 3
// ++在前,变量先自增,然后再参与其他运算
int a = 3;
int b = ++a;// 相当于a++; int b = a;
System.out.println(b);// 4
// ++在后,变量先参与其他运算,然后再自增
int c = 3;
int d = c++;// 相当于int d = c; c++;
System.out.println(d);// 3
// --类似
}
}

比较运算符

比较运算符的结果为boolean类型的值(true,false)
判断相等使用==,注意与赋值运算符=的区别
比较运算符:大于(>),小于(<),大于等于(>=),小于等于(<=),不等于(!=),等于(==)

package Third;
public class third {
public static void main(String[] args) {
System.out.println(1 == 2);// false
System.out.println(2 == 2);// true
System.out.println(1 > 2);// false
System.out.println(1 < 2);// true
System.out.println(1 >= 1);// true
System.out.println(2 >= 1);// true
System.out.println(1 != 2);// true
// 将条件表达式1==2的结果false赋值给b
boolean b = 1 == 2;
System.out.println(b);// false
}
}

逻辑运算符
逻辑运算符两边的数据都是boolean类型的,结果也是boolean类型的

 package Third;
    public class third {
    public static void main(String[] args) {
    // 短路与操作符&&,只有两边都是true,结果才是true,可以理解为并且(and)
    System.out.println(true && true);// true
    System.out.println(true && false);// false
    System.out.println(false && true);// false
    System.out.println(false && false);// false
    System.out.println("***********************");
    // 短路或操作符||,只要一边为true,结果就是true,可以理解为或(or)
    System.out.println(true || true);// true
    System.out.println(true || false);// true
    System.out.println(false || true);// true
    System.out.println(false || false);// false
    // 短路是指,当结果已经明确了,就不必往下执行了
    // 对于&&来说,当第一个表达式的结果为false,整个结果就是false,第二个表达式就不执行了
    // 对于||来说,当第一个表达式结果为true,整个结果就是true,第二个表达式就不执行了
    int i = 10;
    System.out.println(true || ++i == 11);
    System.out.println(i);// 10
// &和|跟&&和||类似,只不过不是短路的
int j = 10;
System.out.println(true | ++j == 11);
System.out.println(false & ++j == 11);
System.out.println(j);// 12
// 尽量使用短路的,提高效率
// 异或,当两边结果不同时,为true,相同时为false
System.out.println(true ^ true);// false
System.out.println(true ^ false);// true
System.out.println(false ^ true);// true
System.out.println(false ^ false);// false
// 非!,取反
System.out.println(!false);// true
System.out.println(!true);// false
}
}

三元运算符

        package Third;
        public class third {
        public static void main(String[] args) {
        int age = 17;
        // 表达式为true,取:之前的,否则取:之后的
        System.out.println(age >= 18 ? "成年了" : "未成年");
        // 表达式为true,取:之前的,否则取:之后的
        String str = age >= 18 ? "成年了" : "未成年";
        System.out.println(str);
        }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值