第二章__变量、数据类型和运算符

1.变量的三个要素:数据类型、变量名称、变量值

2.常量的定义

   定义常量时,需要使用final关键字,且常量名需要大写,多个单词使用“_”分隔。

3.标识符命名规则:

1) 只能是数字,字母,下划线,美元符号
2) 数字不能开头
3) 类名: 首字母大写,与文件名完全一致,后续单词首字母大写 帕斯卡命名法
方法名、变量名: 首字母小写,后续单词首字母大写 驼峰命名法
包名: 全部小写,圆点分隔,域名倒置,不能以圆点开头

4.数据类型

基本数据类型:四类8种

数值类型
int x=1;
整数4种:
long 64bit 整数类型
int 32位 bit 整数类型
short 16位 bit
byte 8位 bit 整数 ( 8个bit是 一个字节 byte )

小数2种:
double 64bit 双精度浮点数
float 32bit 单精度浮点数

字符类型 1种
char 16bit 2个字节

布尔类型 1种
boolean 8bit 1个字节

5.数据类型的转化

强制转换 显示转换 (目标类型)

public class Demo01{
public static void main(String args[]){
String str="Hello";
char c[]=str.toCharArray();
for(int i=0;i<c.length;i++){
System.out.println(c[i]+“。”); 字符串变为字符数组
}
System.out.println("");
String str2=nw String(x);
String str3=nw String(x ,0, 3);
System.out.println(“str2”);
System.out.println(“str3”);

字符数组变为字符串
}
}


自动转换(自动提升,隐式转换)

例子:public class TypeChange{

    public static void main(String[]args){

    double firstnum=50.1;  //第一次的数

    double secondnum;   //第二次的数 

    int rise =6.;        //增加的数

    secondnum=firstnum+rise;  //自动转化

   System.out.println("第二次的数为:"+secondnum);//显示第二次的数  

}

6.==与equals

 

  单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚.

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:

String a=new String("foo");

String b=new String("foo");

  两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即ab中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true

  在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法

  如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类equals方法实现代码如下

boolean equals(Object o){

return this==o;

}

这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象内容是相同的

7.关系运算符

1). >  大于

2).< 小于

3)>=  大于等于

4)<= 小于等于

5)== 等于

6)!= 不等于

8.算数运算符

(+、-、 *、/、%)

9.三目运算符

条件?表达式1:表达式2

首先对条件进行判断,如果条件为true,返回表达式1的值,如果条件结果为false,返回表达式2的值。

例:int a;

   a=6<7?6:7

System.out.println(a);

a=10<7?10:7;

System.out.println(a);

10.分解求得某个数的各数字的值

例: 取一个四位数.

import java.util.Scanner;

public class Demo1 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入四位数:");
int num = input.nextInt();
int gewei = num % 10;
int shiwei = num / 10 % 10;
int baiwei = num / 100 % 10;
int qianwei = num / 1000;
System.out.println("个位的数字为:" + gewei);
System.out.println("十位的数字为:" + shiwei);
System.out.println("百位的数字为:" + baiwei);
System.out.println("千位的数字为:" + qianwei);
}

}

 

11、交换两个数的值的3种方法。

 

 

第一种:int x=5; int y=10;

y=x+y;

y=x-y;

x=x-y;

System.out.println(“x的值为:”+x);

System.out.println(“y的值为:”+y);

 

第二种:int x=5; int y=10; //一个数异或同一个数两次,结果还是那个数,而且不会超出int范围

x=x^y;

y=x^y//y=(x^y)^y

x=x^y//x=(x^y)^x

System.out.println(“x的值为:”+x);

System.out.println(“y的值为:”+y);

 第三种:

public class Demo1 {

// 借助第三方变量进行转化
public static void main(String[] args) {
int num1 = 3;
int num2 = 5;
System.out.println("*****交换前*****");
System.out.println(num1);
System.out.println(num2);
System.out.println("*****交换后*****");
int temp = num1;
num1 = num2;
num2 = temp;
System.out.println(num1);
System.out.println(num2);

}

}

posted on 2018-07-19 17:10  viper.  阅读(258)  评论(0编辑  收藏  举报