Java数据类型变量与运算符
数据类型的概述
分类
- 基本数据类型:byte/float/double/int/char/boolean/long/short
- 引用数据类型
堆、栈、常量池、方法区
数据都存在内存中,内存又分为如下:
1.堆:heap
* 运行时数据区
* 运行时动态分配内存
* 由系统垃圾回收自动回收垃圾
* 存取数据较慢
2.栈:stack
* 存取数据较快
* 数据可以共享
* 数据大小和生命周期必须固定,不灵活
3.方法区:method area
* 用来存储类型信息
4.常量池:
* 用来存储常量
String a="Hello"
放在常量池。
String a = new String("Hello")
放在堆,引用放在栈。
在函数(方法)中定义的基本类型变量存储在 栈 中
引用类型实例的引用(reference)也存储在 栈 中
引用类型实例的成员变量,存储在 堆 中
基本数据类型
基本数据类型的位数大小
转换
- 范围小->范围大的(隐式转换)
- 范围大->范围小的(显示转换、强转,精度丢失)
- 数值型和boolean型不能转换
赋值
使用=
赋值,注意不要越界。比如byte b1=129;
超过127,就会报错。
- byte b1=127;
- float f1=1.0f;
- double d1=1.0d;
- boolean isok=false;
- char='a';
- int i1=1;
☆ 思考以下结果
-
段1
double d1=1.0d; float d2=1.0f; System.out.println("d1==d2 "+(d1==d2)); System.out.println("d1!=d2 "+(d1!=d2)); System.out.println("d1>d2 "+(d1>d2)); System.out.println("d1<d2 "+(d1<d2));
-
段2
double d3=0.3d; float d4=0.3f; System.out.println("d3==d4 "+(d3==d4)); System.out.println("d3!=d4 "+(d3!=d4)); System.out.println("d3>d4 "+(d3>d4)); System.out.println("d3<d4 "+(d3<d4));
标志符
变量、函数、数组、对象、类和接口都需要命名,这些名称就成为标识符。
标识符命名规则
- 只能由英文字母、数字、下划线“_”和“$”符号组成;
- 必须以英文字母、“_”或“$”开头,即不能以数字开头;
- 除“_”和“$”以外,不能包含其它任何特殊字符;
- 不能与关键字冲突;
- 严格区分大小写。
关键字:电脑语言里事先定义的,有特别意义的标识符。比如:main
变量
定义
变量:变量就是申请内存来存储值。变量存在栈中。
作用范围
变量是有作用范围的。
- 题目:有1,2,3,4四个数字,能组成多少个不相同且无重复的三位数?
public class ScopeVariable
{
public static void main(String[] args)
{
int count = 0;
for (int i = 1; i <= 4; i++) //在需要使用变量时声明
{
for (int j = 1; j <= 4; j++)
{
for (int k = 1; k <= 4; k++)
{
if (i != j && i != k && j!= k)
{
int temp = i * 100 + j * 10 + k;
System.out.print(temp + "\t");
count++;
}
}
}
} /*思考:在此处可以访问到变量k吗?*/
System.out.println("\n有:" + count + "个符合要求的数");
}
}
输出语句
- 换行:System.out.println
- 不换行:System.out.print
运算符和表达式
算术运算符
- -:负数
- ++:自增
- --:自减
- +:加法
- -:减法
- *:乘法
- /:除法
- %:取模(余数)
关系运算符
- =:等于
- !=:不等于
- >:大于
- <: 小于
- >=:大于等于
- <=:小于等于
逻辑运算符
- !:逻辑非
- &:与
- |:或
- &&:短路与
- ||:短路或
短路不短路的区别:短路就是左边如果成立了就不再校验右边
条件运算符
-
( ? : )
public class HelloWorld{ public static void main(String[] args) { int score=68; String mark =(68>60)? "及格":"不及格"; System.out.println("考试成绩如何:"+mark); } }
赋值运算符
- =:赋值
- +=:相加并赋值
- -=:相减并赋值
- *=:相乘并赋值
- /=:相处并赋值
- %=:取模并赋值(a=a%b)