Java语言基础知识之变量,数据类型

博主介绍:💐大家好,我是不行,还得练
博客主页:🔍@不行,还得练的个人主页
————👀努力坚持向技术大牛看齐的菜鸟
————🌊时代浪潮,不进则退
🌸本文章为个人在学习中遇到的困难及解决方案,对学习内容的知识总结等等,希望对您有帮助,初入博客,文章简陋粗浅,如有错误,欢迎批评指正✌

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八个基本类型的表格:

数据类型关键字占用空间取值范围默认值
字节型byte1 个字节-128 ~ 1270
短整型short2 个字节-32768 ~ 327670
整形int4 个字节-2147483648 ~ 21474836470
长整型long8 个字节-9223372036854775808 ~ 92233720368547758070L
单精度浮点型float4 个字节-3.4028235E38 ~ 3.4028235E380.0f
双精度浮点型double8 个字节-1.7976931348623157E308 ~ 1.7976931348623157E3080.0d
字符型char2 个字节0 ~ 65535‘\u0000’
布尔类型boolean1 个字节true/falsefalse

注意: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);
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值