Java笔记2

数据类型空间大小

1
2
3
4
5
6
7
8
9
基本(没必要都记住)
字 节------byte------1字节
短整型------short------2字节
整 型------ int ------4字节
长整型------ long------8字节
布尔型------boolean—1bit
单精度------ float ------4字节
双精度------double------8字节
字 符------ char ------2字节

万物皆对象,但是像byte,short这种不是对象,所以我们需要由包装类引入对象的概念。通常我们在后面加一个点.就可以获得其属性

1
2
3
4
5
6
7
byte------Byte
short------Short
int------Integer
long-----Long
float-----Float
double-----Double
char------Character

以下代码作演示

1
2
3
4
5
6
7
8
public static void main(String[] args) {
byte byte_max = Byte.MAX_VALUE;   //最大值
byte byte_min = Byte.MIN_VALUE;   //最小值
System.out.println("the maximum of byte is "+byte_max);
System.out.println("the minimum of byte is "+byte_min);
System.out.println("byte对应的比特位"+Byte.SIZE); 
System.out.println("byte对应的类型"+Byte.TYPE);
}

拓展

1
2
3
4
5
6
7
8
在Java中数字默认是int类型;
所以在初始化赋值long类型时候应该 long 变量 = 1L;(L小写也可)
int num = 1; //定义一个int类型
long num1 = 1; //设计自动转换,因为在java中默认数字为int类型
long num 2 = 2L; //定义一个long类型
char ch = 91; 代表ch为’a‘;
当要查看 字符对应的ASCII码时
可以int ch2 = 'a';

数据类型转换(这里直接给个例子就行)

1
2
3
4
5
6
int a = 55,b = 9;
float g,h;
g = a / b;
h = (float)a / b;
System.out.println(g); //6.0
System.out.println(h); //6.111111111

基本数据类型的默认值

1
2
3
4
5
6
7
8
byte—(byte)0;
short—(short)0;
int—0;
long—0L;
float—0.0F;
double—0.0D;
char— ’ '或\u0000(也代表空,它为Unicode字符) 打印时像这样使用’\u0000‘
boolean—false

在C/C++中,非0数统一视为真,反则为假,在Java中因为有了布尔变量true和false,除此之外没有任何值,因而它和任何数字都无关

拓展

  • 打印int类型中最小值到最大值是否为偶数
    1
    2
    3
    4
    5
    6
    7
    public static void main(String[] args) {
    for(int i = Integer.MIN_VALUE;i<=Integer.MAX_VALUE;i++)
    {
    boolean isEven = (i%2==0);
    System.out.println("i = "+i+",isEven = "+isEven);
    也等价于 System.out.println("i=%d,isEven=%b",i,isEven);
    }
  • 拼接符号的使用
    “+”的功能:加法运算与拼接符号

加法运算:只有数字的时候,结果得到数字;

拼接符号:有字符串的时候,与字符串进行相加,得到字符串;

1
2
3
4
5
6
7
8
public static void main(String[] args) {
int x1 = 5;
int x2 = 2;
System.out.println(x1+x2);
System.out.println(x1+x2+"1");
System.out.println(x1+x2+"K");
System.out.println("A"+x1+x2);
}

运算符

1
2
3
4
5
6
7
8
1.1、赋值运算符(“=”)------太简单不深入了
但是还是提醒一下,左边必须是变量!!!避免0=1;的低级错误!!!
1.2、一元运算符
+/- ------正(负)号
!  ------ NOT,非
~   ------代表取补码
++ ------ 自增运算符
--   ------ 自减运算符

补码:

在OS底层中数值一致用补码进行运算和表示(存储):

主要原因:使用补码,可以将符号位和其他位统一进行处理,同时减法也可以当做加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位时,则进位被舍弃。

其中,正数的补码是它本身,而负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1;

例如:求-5的补码。

-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)

所以-5的补码是11111011。

1.3 算数运算符不多说(+、-、*、/、%)

1.4 逻辑运算符(只对布尔类型进行操作并返回布尔类型数据)

&&/& —— 与

|| / | —— 或

! —— 非

Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。

&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;&则两个表达式都执行。

&可以用作位运算符,当&两边的表达式不是Boolean类型的时候,&表示按位操作。

1
2
3
4
boolean b1 = 1<0 && 1/0==0;
boolean b2 = 1<0 & 1/0==0;
然后输出,会发现第一个1<0得到false不看后面的条件了
而第二个语句 在判断前面为假了以后 后面也会进行判断 但是后面是一个除0错误,所以会报错

表达式的类型转换:

原则:

(1)占用字节较少的数据类型转换成字节数较多的数据类型;

(2)字符类型会转换成int类型;

(3)int类型会转换成float类型;

(4)若表达式中其中一个类型为double,另一个操作数也会转double;

(5)布尔类型不能转换为其它类型;

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
char ch = 'b';
short a = -2;
int b = 3;
float f = 5.3f;
double d = 6.28;
System.out.print("(ch/a)-(d/f)-(a+b) = ");
System.out.println((ch/a)-(d/f)-(a+b));
}
//输出 (ch/a)-(d/f)-(a+b) = -51.18490561773532

3.1 &和&&以及||和|的关系

3.2 递增递减运算符

++1 1++ –1 1–;

3.3 位运算

小技巧:任何数与0000 0001进行或运算后,第一位将变成1;

任何数与1111 1110进行与运算后,第一位将变成0;

一个三目运算符的简单操作

1
2
3
4
5
6
7
//一个三目运算符的简单操作
public class ex {
public static void main(String[] args) {
boolean ret = ((12345679*9)>97654321*3)?true:false; 
System.out.println(ret);
}
}

②生成一个随机字母

1
2
3
4
5
6
7
8
public static void main(String[] args) {
double rand = Math.random(); //值为[0,1)的随机数
System.out.println(rand);
char c1 = (char)(97+(int)(Math.random()*26));
char c2 = (char)(65+(int)(Math.random()*26));
System.out.println("小写字母:"+c1);
System.out.println("大写字母:"+c2);
}

③随机生成一个小写字母并转换为大写

1
2
3
4
5
6
public static void main(String[] args) {
int num = 97+(int)(Math.random()*26);
char ch = (num>=97&&num<=122)?(char)(num-32):' ';
System.out.println("转换前:"+(char)num);
System.out.println("转换后:"+ch);
}