博主介绍:💐大家好,我是不行,还得练
博客主页:🔍@不行,还得练的个人主页
————👀努力坚持向技术大牛看齐的菜鸟
————🌊时代浪潮,不进则退
🌸本文章为个人在学习中遇到的困难及解决方案,对学习内容的知识总结等等,希望对您有帮助,初入博客,文章简陋粗浅,如有错误,欢迎批评指正✌
Java语言基础
变量,数据类型
文章目录
一 、引言
变量来源于数学,是计算机语⾔中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。
我们编写程序的目的是处理业务,在处理业务的过程中,不可避免要存储数据。
在计算机中,哪些地方是可以存储数据的呢?
-
内存
- 存储我们的程序(软件)在执行的过程中自定义的值或者运算的结果的地方
- 程序一旦运行结束,内存就会立马回收,给其他程序使用
-
硬盘
- 持久化数据(文件)
- 即使软件运行结束,文件还一致在
变量本质上就是内存中一块区域
二、变量
1.概念
计算机内存中的⼀块存储空间,是存储数据的基本单元。
2.语法
数据类型 变量名;
变量名 = 值;
数据类型 变量名 = 值;
数据类型 变量名1 = 值,变量名2 = 值,…
public static void main(String[] args) {
//相当于在内存中开辟一块区域,区域的名字叫做a, int表示一种数据的形式(整数)
int a;
//把200这个数字,放到a所表示的内存空间中
a = 200;
System.out.print(a);
int b;
b = 300;
//我们可以通过变量名获取其指向的内存区域中的值
System.out.print(b);
}
3.命名规范
- 可以由数字,字母,下划线_,美元符$,[汉字(德语…)]组成
- 不能以数字开头,首字母要小写,不建议使用汉字
- 不能使用java关键字,保留字
- 使用驼峰命名法,即当一个变量名由多个单词组成时,从第二个单词开始,首字母大写(例如helloWorld,playGame等等)。
- 见闻知意,即见到变量的名字就能猜到它的意思(尽量不要使用拼音,不会的单词可以使用英文翻译,养成良好的编程习惯)
4.变量的使用
- 我们把变量的定义,叫做变量的声明
- 把变量的赋值,叫做变量的初始化
- 没有初始化的变量,不能使用
- 使用变量名,可以访问该变量指向的内存区域中的值
- 变量的可以重复赋值,后面的值会覆盖前面的
- 在同一个 main方法中,不能定义两个变量名相同的变量
代码如下(示例):
public static void main(String[] args) {
//定义变量,声明变量
int age;
//为变量赋值,变量初始化
age = 18;
System.out.println(age);
//变量可以重新赋值
age = 19;
System.out.println(age);
}
二、数据类型
数据类型,顾名思义就是的数据的形式,来规定一个变量所指向的内存空间保存数据的形式
1.基本数据类型
Java中的变量具有严格的数据类型区分。(强类型语⾔),任何⼀个值,都有其对应类型的变量。
好的,以下是Java八个基本类型的表格:
数据类型 | 关键字 | 占用空间 | 取值范围 | 默认值 |
---|---|---|---|---|
字节型 | byte | 1 个字节 | -128 ~ 127 | 0 |
短整型 | short | 2 个字节 | -32768 ~ 32767 | 0 |
整形 | int | 4 个字节 | -2147483648 ~ 2147483647 | 0 |
长整型 | long | 8 个字节 | -9223372036854775808 ~ 9223372036854775807 | 0L |
单精度浮点型 | float | 4 个字节 | -3.4028235E38 ~ 3.4028235E38 | 0.0f |
双精度浮点型 | double | 8 个字节 | -1.7976931348623157E308 ~ 1.7976931348623157E308 | 0.0d |
字符型 | char | 2 个字节 | 0 ~ 65535 | ‘\u0000’ |
布尔类型 | boolean | 1 个字节 | true/false | false |
注意:int为整数的默认类型,如需为long类型赋值较⼤整数时,需在值的后⾯追加“L”。double为浮点数的默认类型,如需为float类型赋值时,需要在值的后⾯追加“F”。
byte、short、int、long、float、double、char这七个基本类型都有与之对应的包装类Byte、Short、Integer、Long、Float、Double、Character。其中,包装类是对象,而基本类型不是对象。在有些情况下,我们需要将基本类型转换成对应的包装类,以便于进行一些操作。
2.其他数据类型
- String字符串类型
-可以表示任何“ ”之间的字面值
public static void main(String[] args) {
String str;
str ="我爱Java";
String name = "周杰伦";
String school = "北大附中";
System.out.println(school); //变量
System.out.println("school"); //就表示自己本身字符串的值(字面值)
}
三、数据类型转化
-
数据类型往上转化
- 可以自动转化
-
数据类型往下转化
- 需要强制转化
- 数据类型 变量名 = (目标数据类型) 需要转化的变量;
public static void main(String[] args) {
/*
* 数据类型往上转化
* 可以自动转化
*/
byte b;
b = 6;
System.out.println(b);
short s;
s = b; //没有报错
System.out.println(s);
int i;
i = s;
long l;
l = i;
float f;
f = l;
double d;
d = f; // d=l,i,s,b;
/*
* 数据类型往下转化(允许,但是需要程序员自己确认,后果自负)
* 强制类型转化(确认后的行为)
*/
double d2 = 3.14;
float f2;
f2 = (float) d2;
System.out.println(f2);
/*
* 1. 把小数转化为整数时,需要强制类型转化
* 2. 自动去除小数
*/
long l2;
l2 = (long) f2;
System.out.println(l2);
int i2;
i2 = (int) l2;
short s2;
s2 = (short) i2;
byte b2;
b2 = (byte) s2;
char c = '中';
int ii = c;
System.out.println(ii); //20013
}
四、数据运算
1.算数运算
算数运算符:⼀元运算符(只有⼀个操作数)。
操作符 | 描述 |
---|---|
+ | 加、求和 |
- | 减、求差 |
* | 乘、求积 |
/ | 除 、求商 |
% | 模、求余 |
++ | 递增,变量值+1 |
- - | 递减,变量值-1 |
public static void main(String[] args) {
/*
* 1. 整数和整数运算,得到的结果都是整数
* 2. 如何两种数据类型进行运算,得到结果的数据类型是范围大的那个
* 2.1 byte和byte, byte和short, short和short 运算结果数据类型全部为int
*/
int a = 5, b = 2;
int r1 = a+b; //7
int r2 = a-b; //3
int r3 = a*b; //10
int r4 = a/b; //2 整数和整数运算,得到的结果都是整数
System.out.println(r4);
double c = 2;
double r5 = a/c; //2.5
System.out.println(r5);
short b1 =4, b2 = 3;
int r6 = b1 + b2;
long l = 7;
double r7 = a+l; //运算结果为long, 然后数据类型往上(自动转)
/*
* 取余
* 余:除不尽余下的数,除尽了就余下0
*
* 余下的数是一定小于除数,范围[0,除数-1]
*/
int d=5, e=2;
int r8 = d%2; //1
System.out.println(r8);
d++;//6
System.out.println(d);
e--; //1
System.out.println(e);
}
2.赋值运算
赋值运算符:等号右边赋值给等号左边。
操作符 | 描述 |
---|---|
= | 直接赋值 |
+= | 求和后赋值 |
-= | 求差后赋值 |
*= | 求积后赋值 |
/= | 求商后赋值 |
%= | 求余后赋值 |
public static void main(String[] args) {
int a;
//为变量赋值
a = 6;
//把变量运算后的结果,重复赋值给该变量
a = a+6;
a = a-3;
a = a*2;
int b = 3;
b += 6; //b = b+6;
b -= 3; //b = b-3;
b *= 2; //b = b*2;
}
3.关系运算
关系运算符:两个操作数进⾏⽐较。
操作符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
public static void main(String[] args) {
int a=11, b=8;
System.out.println(a);
/*
* 关于运算的结果,都是布尔类型的数据
*
* 成立: true
* 不成立:false
*
* 自增自减1符号(--,++) > 算数运算符 > 关系运算符 > 赋值运算符
*/
boolean r = a > b; // true
boolean r2 = a == b; // false
boolean r3 = a != b; // true
boolean r4 = b++ + 3 >= a--; // 11 >= 11;
System.out.println(r4);
a =11;
b = 8;
boolean r5 = b++ + 3 >= ++b - a-- + 14; // 11>14 false
}
4.逻辑运算
逻辑运算符:两个boolean类型的操作数或表达式进⾏逻辑⽐较。
操作符 | 语义 | 描述 |
---|---|---|
&& | 与(并且) | 两个操作数,同时为真,结果为真 |
II | 或(或者) | 两个操作数,有一个为真,结果为真 |
! | 非(取反) | 意为“不是”,真即是假,假即是真 |
public static void main(String[] args) {
/*
* 11 是否在[4,9]这个范围内
*/
int a = 11;
boolean r = a >= 4;
boolean r2 = a <= 9;
boolean r3;
r3 = r && r2;
System.out.println(r3);
boolean isHasHouse = false;
boolean isJavaProgrammer = true;
boolean r4 = isHasHouse || isJavaProgrammer;
System.out.println(r4);
//吃了吗
boolean isEat = true;
//没有吃
boolean isNotEat = !isEat;
System.out.println(isNotEat);
}
5.三目运算
三元运算符:将判断后的结果赋值给变量。
操作符 | 语义 | 描述 |
---|---|---|
? : | 布尔表达式?结果1:结果2 | 当表达式结果为真,获得结果1;当表达式结果为假,获得结果2 |
public static void main(String[] args) {
int score = 88;
/*
* 通过分数,返回 及格, 不及格
*/
String result = score>=60 ? "及格" : "不及格";
double salary = 7000;
boolean isSatisfied = salary > 6000 ? true :false;
/*
* 定义成绩的等级
*
* 90- A
* 80-90 B
* 60-80 C
* 0-60 D
*/
score = 88;
char result2 = score>=90 ? 'A':
score >= 80 ? 'B':
score >= 60 ? 'C' :'D';
}
五、字符串的拼接
自动类型提升
- 进⾏算数运算时:
- 两个操作数有⼀个为double,计算结果提升为double。
- 如果操作数中没有double,有⼀个为float,计算结果提升为float。
- 如果操作数中没有float,有⼀个为long,计算结果提升为long。
- 如果操作数中没有long,有⼀个为int,计算结果提升为int。
- 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
任何类型与String相加(+)时,实为拼接,其结果⾃动提升为String。
public static void main(String[] args) {
int n = 6;
int r = n + 3;
System.out.println(r);
/*
* 如果 加号 的两边出现 字符串
* 此时 加号 就变成了拼接符(就不再算数运算符的+了),返回类型为字符串
*/
String str = "6";
// String result = str + 3.14; //63.14
String result = str + true; //6true
System.out.println(result);
String result2 = 4+6+'a'+"66"+false; // 10766false
System.out.println("result2的结果:"+result2); // result2的结果:0766false
}
六、控制台录入
程序运⾏中,可在控制台(终端)⼿动录⼊数据,再让程序继续运⾏。
- 使⽤顺序:
- 导⼊ java.util.Scanner。
- 声明 Scanner 类型的变量。
- 使⽤Scanner类中对应的⽅法(区分类型):
- .nextInt(); //获得整数
- .nextDouble(); //获得⼩数
- .next(); //获得字符串
- .next().charAt(0);//获得单个字符
如果输⼊了不匹配的数据,则会产⽣ java.util.InputMismatchException。
public static void main(String[] args){
//2.声明Scanner类型的变量
Scanner input = new Scanner(System.in);
System.out.println("请输⼊⼀个整数:");
//3.使⽤
int i = input.nextInt(); //控制台获取⼀个整数
System.out.println("您输⼊的值为:" + i);
}