Java day02

news/2024/9/25 16:16:04

java day02

DtaaType 数据类型

Java是一门强类型的语言。

1、变量

变量:指的是在Java程序运行过程中,其值可以发生改变的量。

定义一个变量的语句定义格式:

//数据类型 变量名 = 初始化值;

注意事项:

1、变量要进行初始化赋值,才可以进行使用
2、在同一作用域下,变量名不能重复,可以大小写不一样,严格区分大小写的。
3、java中整数默认是int类型,要想定义一个long类型的变量,需要在值的末尾加上L或者l,推荐使用L
4、java中小数默认是double类型,要想定义一个float类型的变量,需要在值的末尾加上F或者f,推荐使用F

2、数据类型

1、基本数据类型:

/*整数类型:		所占的字节数		可表示的范围byte			1		   -2^7~2^7-1short       	2          -2^15 ~ 2^15-1int         	4          -2^32 ~ 2^32-1    long        	8          -2^63 ~ 2^63-1  小数类型:		 float			4		   double			8布尔类型:		 boole			1字符类型:char			根据具体的编码来定,不同的编码下,java中一个字符所占的字节数是不同的
*/        

2、引用数据类型:【暂时没学】

3、代码举例

public class DataTypeDemo1{public static void main(String[] args) {//数据类型 变量名 = 初始值//定义一个byte类型的变量byte b1 = 100;System.out.println(b1);//直接打印这个变量,实际上打印的是该变量存储的值//定义一个short类型的变量short s1 = 200;System.out.println(s1);//定义一个int类型的变量int i1 = 300;System.out.println(i1);//int i2 = 30000000000000;超出int类型可表示的范围long i2 = 30000000000000L;System.out.println(i2);//定义一个float类型的变量float f1 = 12.34F;System.out.println(f1);//定义一个double类型的变量double d1 = 33.45;System.out.println(d1);//定义一个布尔类型的变量boolean b2 = true;System.out.println(b2);//创建一个字符变量char c1 = 'a';System.out.println(c1);}
}

3、数据类型转换

自动数据类型转化

//在Java中,变量参与运算的时候,会自动提升数据类型,会转化为计算中数据类型最大的
byte,short,char -> int -> long -> float -> double

强制数据类型转化

/*语句定义格式:目标数据类型 变量名 = (目标数据类型)(要转型的值或表达式)
注意:今后尽量不要用,可能会损失精度。
*/

代码示例

public class DataTypeDemo2 {public static void main(String[] args) {//哪句是编译失败的呢?为什么呢?
//        byte b1=3,b2=4,b; //不推荐这么定义//工作的时候,推荐一个变量定义占用一行byte b1=3;byte b2=4;byte b;
//        b=b1+b2; // 如果是变量参与运算,会先自动类型转换,做完运算后,再判断是否可以进行赋值//强制类型转换b=(byte)(b1+b2);System.out.println(b);
//        b=3+4; // 如果是常量参与运算,会先进行运算,运算后,会判断结果是否在范围内,如果在直接赋值}
}

强制数据类型转化案例

public class DataTypeDemo3 {public static void main(String[] args) {byte b = (byte)130; // 无法直接赋值,原因是130超过了byte的最大范围,需要强制类型转换System.out.println(b); // -126}
}
//计算过程
/*计算机中的数据都是采用补码进行运算的130的补码:00000000 00000000 00000000 10000010做强制类型转换:补码:  (00000000 00000000 00000000) 10000010补码:   10000010已知补码求原码:符号位      数值位补码:    1        0000010反码:    1        0000001原码:    1        1111110-----------------------------64 + 32 + 16 + 8 + 4 + 2 = 126因为符号位是1,所以最终的结果是-126*/

练习

请写出下列程序的结果

System.out.println('a');
System.out.println('a'+1);
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
/*
注意:1、+ 号两边若都没有字符串,这个就是最普通的算数加法运算2、若有字符参与算数运算的话,java虚拟机会将该字符所对应的ASCII码表中的数值进行转换记住三个特殊的字符对应的ASCII码值:'0' - 48'A' - 65'a' - 973、同级别优先级的符号,从左向右进行运算4、+ 号两边若任意一边是字符串,而是做字符串的左右拼接操作,拼接结束后是一个新的字符串
*/

答案

public class DataTypeDemo4 {public static void main(String[] args) {//代码格式化的快捷键:ctrl + alt + L
//        System.out.println('a'); // a
//        System.out.println('a' + 1); // 98System.out.println("hello" + 'a' + 1); // helloa1System.out.println('a' + 1 + "hello"); // 98helloSystem.out.println("5+5=" + 5 + 5); // 5+5=55System.out.println(5 + 5 + "=5+5"); // 10=5+5System.out.println("5+5=" + (5+5)); // 5+5=10}
}

4、运算

1、赋值运算

1、赋值运算符:= ,+= , -= ,*= ,/= ,%=

代码示例

public class FuZhiDemo1 {public static void main(String[] args) {int a = 3;//        a += 4;
//        System.out.println(a);a-=5;System.out.println(a);}
}/*short s=1, s = s+1;short s=1, s+=1;*/
public class FuZhiDemo2 {public static void main(String[] args) {
//        short s = 1;
//        s = (short) (s + 1);
//        System.out.println(s);short s = 1;s += 1; // s = (short) (s + 1);System.out.println(s);}
}

2、关系运算

1、关系运算符:> ,< ,>=, <=, !=, ==

关系表达式的结果一定是boolean类型的

2、代码示例

public class GuanXiDemo1 {public static void main(String[] args) {int a = 3;int b = 4;System.out.println(a==b); // false
//        System.out.println(a=b); // 4System.out.println(a>b);System.out.println(a<b);System.out.println(a<=b);System.out.println(a>=b);System.out.println(a!=b);}
}

3、逻辑运算

1、逻辑运算符:& , | , ^ , ! , && , ||

逻辑运算符,参与运算的参数类型是boolean,结果也是一个boolean类型的

2、代码示例

public class LuoJiDemo1 {public static void main(String[] args) {int a = 3;int b = 4;// & 有false则false
//        System.out.println((a++>3)&(b++>4)); // false & false = false
//        System.out.println("a: " + a + ", b: " + b);
//        System.out.println((a++>3)&(b++==4)); // false & true = false
//        System.out.println((a++==3)&(b++>4)); // true & false = false
//        System.out.println((a++==3)&(b++==4));// true & true = true// && 短路与 当左边为false的时候,右边表达式不会执行,结果为false
//        System.out.println((a++ > 3) && (b++ > 4)); // false && false = false
//        System.out.println("a: " + a + ", b: " + b);
//        System.out.println((a++ > 3) && (b++ == 4)); // false && true = false
//        System.out.println((a++ == 3) && (b++ > 4)); // true && false = false
//        System.out.println((a++ == 3) && (b++ == 4));// true && true = true// | 有true则true
//        System.out.println((a++ > 3) | (b++ > 4)); // false | false = false
//        System.out.println((a++ > 3) | (b++ == 4)); // false |  true = true
//        System.out.println((a++ == 3) | (b++ > 4)); // true | false = true
//        System.out.println((a++ == 3) | (b++ == 4));// true | true = true
//        System.out.println("a: " + a + ", b: " + b);// || 短路或 当左边为true的时候,右边表达式不会执行,结果为true
//        System.out.println((a++ > 3) || (b++ > 4)); // false || false = false
//        System.out.println((a++ > 3) || (b++ == 4)); // false ||  true = true
//        System.out.println((a++ == 3) || (b++ > 4)); // true || false = true
//        System.out.println((a++ == 3) || (b++ == 4));// true || true = true
//        System.out.println("a: " + a + ", b: " + b);// System.out.println(100>a>10) // java中不允许出现连续比较System.out.println(a>10 && a<100);// ^ 异或 相同则false,不同则true
//        System.out.println((a++ > 3) ^ (b++ > 4)); // false ^ false = false
//        System.out.println((a++ > 3) ^ (b++ == 4)); // false ^  true = true
//        System.out.println((a++ == 3) ^ (b++ > 4)); // true ^ false = true
//        System.out.println((a++ == 3) ^ (b++ == 4));// true ^ true = false//! 将true变成false, false变成true
//        System.out.println(!(a++ > 3));}
}

4、三目运算

1、三目运算符【三元运算符】:

​ 语句定义格式:

​ (关系表达式)?表达式1:表达式2;

​ 这里的表达式1和表达式2必须是要有一个结果值的。关系表达式成立接表达式1,反之接表达式2

2、代码示例

//需求:求两个数中的最大值
public class SanMuDemo1 {public static void main(String[] args) {int a = 3;int b = 8;int x = (a > b) ? a : b;System.out.println(x);(a > b) ? System.out.println(a) : System.out.println(b);}
}

5、算术运算

1、算数运算符:+, -, *, /, %, ++, --

java中,一个算数表达式最终的结果数据类型,是由参与运算最大的那个参数类型决定的。

2、代码示例

public class SuanShuDemo1 {public static void main(String[] args) {int a = 3;int b = 4;
//        System.out.println(a+b);
//        System.out.println(a-b);
//        System.out.println(a*b);
//        System.out.println(a/b); // 整除,保留整数部分
//        System.out.println(a%b);System.out.println(a*1.0/b);}
}

3、++1 与--1

/*++: 自加1++在后,先赋值再进行自加1;++在前,先自加1,再赋值参与运算
--: 自减1--在后,先赋值再进行自减1;--在前,先自减1,再赋值参与运算
*/public class SuanShuDemo2 {public static void main(String[] args) {/***  单独使用*/int a = 3;int b = 4;System.out.println("a: " + a);System.out.println("b: " + b);System.out.println("-----------------------------");
//        a++;
//        b++;
//        ++a;
//        ++b;
//        System.out.println("a: " + a);
//        System.out.println("b: " + b);/***  混合使用*/
//        int x = a++;
//        System.out.println(x); // 3int x2 = ++a;System.out.println(x2);}
}

6、位运算

1、

位运算符:针对数值2进制形式的计算& | ^ ~  >>  << >>>位运算符,参与运算的是数值,结果也是一个数值

代码示例与原理

public class WeiDemo1 {public static void main(String[] args) {int a = 3;int b = 4;//        System.out.println(a&b);
//        System.out.println(a|b);
//        System.out.println(a^b);System.out.println(~a);}
}
/*计算机中所有的运算都是采用补码进行的3的补码:00000000 00000000 00000000 000000114的补码:00000000 00000000 00000000 00000100&:有0则000000000 00000000 00000000 00000011&00000000 00000000 00000000 00000100-------------------------------------00000000 00000000 00000000 00000000|:有1则100000000 00000000 00000000 00000011|00000000 00000000 00000000 00000100-------------------------------------00000000 00000000 00000000 00000111^:相同则0,不同则100000000 00000000 00000000 00000011^00000000 00000000 00000000 00000100-------------------------------------00000000 00000000 00000000 00000111~: 0变成1,1变成000000000 00000000 00000000 00000011~-------------------------------------补码  11111111 11111111 11111111 11111100反码  11111111 11111111 11111111 11111011原码  10000000 00000000 00000000 00000100------------------------------------------4*/

2、

 >>:右移,整体补码向右移动若干位,右边多出的部分丢弃,若最高位是1,左边就用1补齐;反之用0补齐<<:左移,整体补码向左移动若干位,左边多出的部分丢弃,右边用0补齐>>>:无符号右移,整体补码向右移动若干位,右边多出的部分丢弃,左边无论最高位是0还是1,都用0补齐

代码示例与原理

public class WeiDemo2 {public static void main(String[] args) {System.out.println(24>>2); // 24/2^2 = 6System.out.println(2<<4);  // 2*2^4 = 32System.out.println(-24>>>2); // 1073741818}
}
/*24的补码:00000000 00000000 00000000 0001100000000000 00000000 00000000 00011000>>2:  00000000 00000000 00000000 00000110(00)------------------------------------------------2的补码:00000000 00000000 00000000 0000001000000000 00000000 00000000 00000010<<4: (0000)00000000 00000000 00000000 00100000-24原码:10000000 00000000 00000000 00011000反码:11111111 11111111 11111111 11100111补码:11111111 11111111 11111111 11101000------------------------------------------11111111 11111111 11111111 11101000>>>2: 0011111111 11111111 11111111 111010(00)*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/64621.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

AI自动生成代码注释

在vscode 中安装 TONGYI Lingma

通过 Tampermonkey 实现学习通全自动刷课

本文介绍了如何使用 Tampermonkey 这一流行的用户脚本管理器,通过其脚本库实现学习通的全自动刷课。文章详细讲解了 Tampermonkey 的安装步骤、OCS 脚本的配置方法,以及题库的使用流程,帮助读者高效完成学习任务。在学习过程中,自动化工具能大大提升学习效率。Tampermonkey…

KBU1010-ASEMI单向整流桥KBU1010

KBU1010-ASEMI单向整流桥KBU1010编辑:ll KBU1010-ASEMI单向整流桥KBU1010 型号:KBU1010 品牌:ASEMI 封装:KBU-4 批号:2024+ 类型:单向整流桥 电流(ID):10A 电压(VF):1000V 安装方式:直插式封装 特性:大功率、整流扁桥 产品引线数量:4 产品内部芯片个数:4 产品内部…

Kubernetes中Ingress的原理和配置

Ingress的概念和作用 Ingress是Kubernetes集群中的一个对象,用于将外部流量路由到集群内部的服务。它充当了进入Kubernetes集群的API网关,负责接收外部请求,并将其转发到正确的目标服务上。 Ingress通常通过HTTP和HTTPS提供对服务的访问,并支持基于主机名、路径以及其他HTT…

《如 何 速 通 一 套 题》4.0

A sprial 找规律。直接做。 #include <bits/stdc++.h> #define int long long using namespace std;int t, n;int sqrtll(int n) {int l = 1, r = 1000000, ans = 0;for(; l <= r; ) {int mid = (l + r) >> 1;if(mid * mid >= n) {ans = mid, r = mid - 1;}e…

自定义表格样式

HTML:<div class="table-container"><table style="width: 90%; margin-left: 5%"><tr class="table-title"><th style="width: 33%">科室名称</th><th style="width: 33%">当日登录次…

Bash脚本基本语法

一、Bash脚本以及相关介绍Bash脚本是一种在Unix或Linux操作系统中广泛使用的脚本语言,它允许用户编写一系列命令,这些命令将被Bash(Bourne-Again SHell)解释器执行。Bash脚本可以用于自动化各种任务,比如文件管理、程序执行、系统维护等。 编写Bash脚本的基本步骤包括:创…

【vulhub】Discuz-任意文件删除

【vulhub】Discuz-任意文件删除 0x00漏洞介绍 通过配置个人信息的属性值,导致文件删除。 影响版本Discuz <= 3.40x01 搭建环境 数据库服务器填写db(必须db,不然安装失败),数据库名为discuz,数据库账号密码均为root,管理员密码任意。填写联系方式页面直接点击跳过本步…