Java学习笔记--数据类型和运算符

本文概述了Java编程中关键的数据类型(整型、浮点型、字符型和布尔型)、运算符(算数、赋值、关系、逻辑和位)以及类型转换的规则,包括自动类型转换和强制类型转换,还介绍了如何通过Scanner获取用户输入。适合初学者掌握基础概念。
摘要由CSDN通过智能技术生成

JAVA学习

这是一篇自己目前学习java的一些笔记,主要就是根据尚学堂的java300集写的一些笔记。希望能给大家带来一些帮助,也是为了鞭策自己每天努力学习。有不对的地方希望提出然后更正。

java的一些数据类型和运算符

数据类型


java中定义了3类8中基本数据类型

  • 数值型: byte(1字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)
  • 字符型:char(2字节)
  • 布尔型:boolean(1位)

数据类型分为:基本数据类型:数值型,字符型,布尔型-

​ 引用数据类型(用来引用对象,4个字节):类(class),接口(interface),数组

整型变量/常量

含有:byte,short,int,long四类

long a = 7400000000L; 后面加L代表这是一个Long类型的常量

八进制:0开头,如:015

十六进制:0x开头 如0x15

二进制:以0b开头 如:0b01110011

浮点型变量/常量

含有:float(单精度,精确到7个有效数字)

double(双精度)

java浮点类型常量有两种表示形式

  • 十进制数形式 例如:3.14 314.0 0.314
  • 科学记数法形式 例如 : 314e2 (e2代表10的2次方,即314x100) 314E-2 (即314x10的-2次方)

使用科学记数法赋值:

double f = 314e2;  //即314*10^2 
double f = 314e-2;	//即314*10^-2 ---->3.14

float类型的数值要加后缀F,不加就默认为double类型的数值,在数值后加D可明确为double类型

float f = 3.14F;
double d1 = 3.14;
double d2 = 3.14D;

浮点数是不精确的,一定不要用于比较

例1:

float f =0.1f;
double d = 1.0/10;
System.out,println(f==d);
//代码的运行结果会输出false

例2:

float d1 = 423432423f;
float d2 = d1+1;
if(d1==d2){
    System.out.println("d1=d2");
}else{
    
    
    System.out.println("d1!=d2");
}
//代码运行的结果会是“d1=d2”

想要比较浮点数,建议使用java.math包下面的两个类:BigIntegerBigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算

示例:使用Bigdecimal进行浮点数的比较:

import java.math.BigDecimal;
public class Main{
	public static void main(String[] args){
		BigDecimal bd = BigDecimal.valueOf(1.0);
		bd = bd.subtract(BigDecimal.valueOf(0.1));	 //bd减0.1
		bd = bd.subtract(BigDecimal.valueOf(0.1));
		bd = bd.subtract(BigDecimal.valueOf(0.1));
		bd = bd.subtract(BigDecimal.valueOf(0.1));
		bd = bd.subtract(BigDecimal.valueOf(0.1));
		System.out.println(bd); //0.5
		System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1); //0.5000000000000001
        BigDecimal bd2 = BigDecimal.valueOf(0.1);
		BigDecimal bd3 = BigDecimal.valueOf(1.0/10.0);
		System.out.println(bd2.equals(bd3));	 //会返回true
	}
}
字符型变量/常量

char类型用来表示在Unicode编码表中的字符,共65536个字符,即十六进制表示是从’\u0000’到’\uFFFF’,占2个字节,用单引号表示,如:‘A’

例:

char a = 'A';
char b = '中';
char c = '\u0061';

常见的 一些转义字符:

转义符含义Unicode值
\b退格(backspace)\u0008
\n换行\u000a
\r回车\u000d
\t制表符(tab)\u0009
\ \反斜杠\u005c
\ ’单引号\u0027
\ "双引号\u0022
布尔型变量/常量

boolean类型只有两个常量值,即true和false,在内存中占一位,不可以使用0或非0 常数代替true和false,常用来判断逻辑条件。

例:

boolean flag;
flag = true;
if(flag){
    \\true的分支
}else{
    \\false的分支
}

运算符(operator)


运算符大概分为:算术运算符,赋值运算符,扩展运算符,关系运算符,逻辑运算符,位运算符,条件运算符,字符串运算符等。

算数运算符
  • 二元运算符: +,-,*,/,%

    ​ 二元运算符需要两个操作数完成运算

    二元运算符运算规则:

    整数运算

    1. 两个操作数一个为long,则结果也为long
    2. 没有long时,结果为int

    浮点运算:

    1. 两个操作数有一个为double,则结果为double
    2. 只有两个操作数都为float,结果才为float

    取模运算

    1. 操作数可为浮点数,一般为证书,结果为“余数”,“余数”的符号和左边的操作数符号相同,如:7%3=1,-7%3=-1,7%-3=1.
  • 一元运算符:++,–

    该运算符只需要一个操作数即可运算。

赋值及其扩展赋值运算符

常见的扩展赋值运算符:+=-=,·*=/=%=\

例:

int a = 3;
int b = 4;
a+=b; //相当于a=a+b
a*=b+3; //相当于a=a*(b+3)
关系运算符

关系运算符用来比较运算,关系运算的结果是布尔值:即true和false

常见关系运算符:==,!=,>,<,>=,<=

逻辑运算符

常见逻辑运算符:

运算符说明
逻辑与:&两个操作数都为true,结果为true
逻辑或: |两个操作数有一个为true,则结果为true
短路与:&&只要有一个为false,则直接返回false
短路或:||只要有一个为true,则直接返回true
逻辑非:!取反,例:!true为false
逻辑异或:^相同为false,不同为true

在实际使用的时候,通常使用&&和||,而不是&和|,因为这样会提高效率

位运算符
位运算符说明
~取反
&按位与(与:遇0则0)
|按位或(或:遇1则1)
^按位异或(异或:相同为0,不同为1)
<<左移运算符,左移一位相当于乘2
>>右移运算符,右移一位相当于除2取商
字符串连接符

字符串连接符即 +

例:

String a = "123";
String b = "456";
System.out.println(a+b);
//结果为123456
条件运算符(三元运算符)

语法格式:

x?y:z

其中x为boolean类型的表达式,先计算x的值,若x的值为true,则整个运算的结果为表达式y的值,否则为z的值

例:

int score = 80;
String score<60?"不及格":"及格";
//80>60,结果string的值是及格
int x = 1;
System.out.println(x>0?1:(x==0?0:-1));
//因为x=1>0,所以结果输出1
//若x=0,输出0
//若x=-100,输出-1
运算符的优先级问题

java运算符优先级

  • 表达式里面优先使用小括号组织
  • 逻辑非>逻辑与>逻辑或

类型转化


自动类型转换

自动类型转化指的是容量小(范围大小)的数据类型可以自动转化为容量大的数据类型。

自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:

低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double

int 和long类型向float类型转化,long向double类型转化,会有精度损失

强制类型转换

语法格式

(目标数据类型)x

示例:

double x= 3.14;
int nx = (int)x;
//此时nx的值就变为了3
转化中常见的问题

注意:

  • 操作数比较大的时候要注意是否溢出
  • 尽量不要命名名字为l的变量,l和数字1容易混淆,long类型尽量使用大写L

使用Scanner获取键盘输入


import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
String favor = scanner.nextLine();
int age = scanner.nextInt();
接下来的内容会随着自己的学习进行更新。加油,奥力给!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值