java基础--第二章 变量和数据类型

1、目标

掌握标识符和关键字

掌握变量和常量的使用

了解Java中的数据类型

掌握数据类型转换

2、变量

变量:一个数据存储空间的表示

不同数据存入具有不同内存地址的空间,相互独立

已经将数据存入内存,但是: 怎么找到存入的数据?

2.1变量命名规则

①字下美人数:
字:大小写英文字母,a-z、A-Z
下:下划线_
美:美元符号$(通常不用)
人:人民币符号¥(通常不用)
数:数字0-9
变量名通常由字下美人数组成,以字母开头,数字不能作为开头
②骆驼
即驼峰命名法,变量名有多个单词组成时,从第二个起首字母大写,例:className、studentName
③有意义
即能够做到见名识意,通常用相应的英文全拼或缩写表达,例如学生用 stu或student

3、Java常见的数据类型

3.1、数据类型说明

数据类型

大小

取值范围

byte

1字节8位

-128 ~ +127

int

4字节32位

-2147483648(-2^31) ~ + 2147483647(2^31-1)

short

2字节16位

-32768 (-2^15) ~ + 32767 (+2^15-1)

long

8字节64位

-2^63 ~ + 2^63-1

float

4字节32位浮点数

1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38

double

8字节64位浮点数

4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308

char 字符类型

boolean 布尔类型

单位换算

8位 = 1字节(byte)

1024字节 = 1kb(千字节)

1024kb = 1MB(兆字节)

3.2、变量的声明和使用

第一步、声明变量,根据数据类型在内存申请空间。

第二步、复制,即“将数据存储至对应的内存空间”

第一二步可以合并

第三步:使用变量,即“取出数据使用”

4、常量的使用 final

在程序运行中,常量如何表示:

推荐做法:(1)常量名通常大写(2)不同字符使用下划线分隔(3)只能被赋值一次,通常定义时即对其初始化

优点:比较安全

注意:

在程序运行过程中值不可以改变

常量一般名字使用全大写

5、Scanner的使用

使用Scanner

第一步导入Scanner类

import java.util.*;

第二步、创建Scanner对象

Scanner input = new Scanner(System.in);

第三步、获得键盘输入的数据。

int now = input.nextint();

6、自动类型转换

规则1:如果一个操作数为double型,则整个表达式可提升为double型

规则2:满足自动类型转换的条件

两种类型要兼容

数值类型(整型和浮点型)互相兼容

目标类型大于源类型:

例如:double 型大于 int 型

小转大

强制类型转换规则

7、赋值运算符

如何借助变量以及赋值运算符实现两个数据的交换?

int num1=8;

int num2=9;

1、借助中间变量

int temp;

temp = num1;

num1 = num2;

num2 = temp;

2、使用^位移运算交换

操作符

描述

例子

如果相对应位都是1,则结果为1,否则为0

(A&B),得到12,即0000 1100

|

如果相对应位都是 0,则结果为 0,否则为 1

(A | B)得到61,即 0011 1101

^

如果相对应位值相同,则结果为0,否则为1

(A ^ B)得到49,即 0011 0001

按位取反运算符翻转操作数的每一位,即0变成1,1变成0。

(〜A)得到-61,即1100 0011

<<

按位左移运算符。左操作数按位左移右操作数指定的位数。

A << 2得到240,即 1111 0000

>>

按位右移运算符。左操作数按位右移右操作数指定的位数。

A >> 2得到15即 1111

>>>

按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

A>>>2得到15即0000 1111

a = 60 二进制为00111100

b = 13 二进制为00001101

则 a^b = 00110001

这里可以使用

a = a^b

b = a^b

a = a^b

这里 第一个之后的值为 b = a^b^b a = a^b^a

b^b = 0 a^0 = a b = a同理 a=b

3、数值相加减交换

a = a+b

b = a-b

a = a-b

原理:通过先求得两数的和再进行减运算从而互换。

8、运算符

8.1关系运算符

运算符

含义

范例

结果

==

等于

5==6

false

!=

不等于

5!=6

true

>

大于

5>6

false

<

小于

5<6

true

>=

大于等于

5>=6

false

<=

小于等于

5<=6

true

=为赋值运算符,==为等于运算符关系表达式的结果为布尔值>、<、>=、<= 运算符的优先级别高于==、!=>、<、>=、<=运算符只支持数值类型的数据比较(返回boolean类型)

8.2逻辑运算符

运算符

含义

运算规则

&&

短路与

两个操作数都是true,结果才是true

||

短路或

两个操作数一个是true,结果就是true

!

操作数为true,结果为false

操作数为false,结果为true

如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了;优先级别 ! > && > ||

短路与 短路或,当前面条件已经能判断该语句是否为true和false时,后面的语句将不会执行判断。

8.3条件运算符

int min;min = 5 < 7 ? 5 : 7;System.out.println(min);min = 10 < 7 ? 10 : 7;System.out.println(min);

8.4运算符优先级

单目运算符包括!   ++  --,优先级别高

优先级别最低的是赋值运算符

可以通过()控制表达式的运算顺序,()优先级最高

从右向左结合性的只有赋值运算符、三目运算符和单目运算符

算术运算符 > 关系运算符 > 逻辑运算符

9、java内存

java的内存分为堆和栈

栈: 一般存储基本数据类型

堆: 一般存储引用数据类型

10、练习

练习一、使用变量完成如下操作输出Java课考试最高分:98.5输出最高分学员姓名:张三输出最高分学员性别:男

代码:

package demo1;


publicclass student {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		doublescore;
		String name;
		String sex;
		
		score = 98.5;
		name = "张三";
		sex = "男";
		
		System.out.print("输出Java课考试最高分:" +score + "\n" + "输出最高分学员姓名:" + name +"\n" + "输出最高分学员性别:" + sex);
    	}
}

练习二、输出个人日历

代码:

package demo1;


publicclass Calendar {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		String name;
		intage;
		intworkyear;
		intworkdemo;
		String tchnical;
		String hobby;
		
		
		name = "小明";
		age = 25;
		workyear = 3;
		workdemo = 5;
		tchnical = "java";
		hobby = "篮球";
		
		
		System.out.println("这个同学的姓名是:" + name);
		System.out.println("年龄是:" + age);
		System.out.println("工作了:" + workyear + "年");
		System.out.println("做过:" + workdemo + "个项目");
		System.out.println("技术方向是:" + tchnical);
		System.out.println("兴趣爱好是:" + hobby);
	}


}

练习三、输入并显示会员卡号

代码:

package demo1;




import java.util.*;


publicclass VipNumber {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		intvipnumber;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入4位会员卡号");
		vipnumber = sc.nextInt();
		System.out.println("会员卡号是:" + vipnumber);
	}


}

练习四、求四位会员部卡号之和

代码:

package demo1;


import java.util.Scanner;


publicclass vipadd {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		intvipnumber;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入4位会员卡号");
		vipnumber = sc.nextInt();
		System.out.println("会员卡号是:" + vipnumber);
		
		inta = vipnumber /1000;
		intb = vipnumber%1000/100;
		intc = vipnumber%100/10;
		intd = vipnumber%10;
		intnum = a+b+c+d;
		System.out.println("会员卡号:" + vipnumber + "各位之和是" +num );
		
	}


}

练习五、判断是否中奖

package demo1;


import java.util.Scanner;


publicclass award {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		intvipnumber;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入4位会员卡号");
		vipnumber = sc.nextInt();
		System.out.println("会员卡号是:" + vipnumber);
		
		inta = vipnumber /1000;
		intb = vipnumber%1000/100;
		intc = vipnumber%100/10;
		intd = vipnumber%10;
		intnum = a+b+c+d;
		System.out.println("会员卡号:" + vipnumber + "各位之和是" +num);
		
		String info = num > 20 ? "你中奖了!!奖品是mp3": "你没中奖";
		System.out.println(info);
	}


}

10、作业

1.手动输入一个学生的成绩,对这个成绩进行一次加分,
加当前成绩的20%,输出加分后成绩


2.商场举行店庆,抽几折打几折,
先手动输入消费金额,再输入,抽到的折扣,计算出折后价格
(折扣输入0~1)

3.商场消费返利活动,手动输入顾客消费金额,
如果金额打8折后仍然满1000元,用户就获得200元代金券一张(不考虑多张)

作业一、给学生成绩加分

package homework;


import java.util.*;
publicclass addsco {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		doublescore;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入成绩");
		score = sc.nextDouble();
		score *= 1.2;
		System.out.println("加分后成绩为" + score);
	}


}

作业二、抽几折打几折

package homework;


import java.util.*;
publicclass discount {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		doublespentm;
		doublediscount;
		doublefin;
		
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入消费金额");
		spentm = sc.nextDouble();
		System.out.println("请输入折扣");
		discount = sc.nextDouble();
		fin = spentm*discount;
		System.out.println("您最终消费:" + fin);
//		String result = discount > 1 ? "折扣只能在0-1":discount<0? "折扣只能在0-1":"您最终消费:" + fin;
		
	}


}

作业三、满多少打折

package homework;


import java.util.Scanner;


publicclass discount2 {


	publicstaticvoid main(String[] args) {
		// TODO Auto-generated method stub
		doublespentm;
		doublediscount=0.8;
		doublefin;
		
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入消费金额");
		spentm = sc.nextDouble();
//		System.out.println("请输入折扣");
//		discount = sc.nextDouble();
		fin = spentm*discount;
		String result = fin > 1000 ? "折扣后满1000元 得到200元代金券":"折扣后未满1000元";
		System.out.println(result);
	}


}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值