IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java数据类型与运算符及基本类型学习笔记 -> 正文阅读

[Java知识库]Java数据类型与运算符及基本类型学习笔记

1.博客:csdn-->markdown模式帮助博客更美观
2.上机练习,所有的学习都不能作假
3.危机感满满
4.day2学习上传
String 存在与双引号中的若干个字符 "hello" ?
char ? 字符'h' 'l'
类名:大驼峰
subline的快捷键:main pl
idea快捷键:psvm main sout
idea 集成开发环境


数据类型:
8种基本类型:byte short int long float double char boolean?
引用类型:String ?类 接口 数组

转义字符\' \n \" \t \\

学习千万不要眼高手低,哪怕是最简单的东西都是有学习的意义的


? ?public static void main(String[] args) {
? ? ? ? System.out.println("ab"+"cd");
? ? ? ? String str1 = "ab";
? ? ? ? String str2 = "cd";
? ? ? ? System.out.println(str1+str2);?? ??? ?//abcd
? ? ? ? System.out.println(10+str1+str2);?? ?//10abcd
? ? ? ? System.out.println(10+20+str1+str2);//30abcd
? ? ? ? System.out.println(str1+str2+10+20);//abcd1020
? ? ? ? String ret1 = 10+str1+str2;?? ??? ??? ?
? ? ? ? String ret2 = 10+20+str1+str2;
? ? ? ? String ret3 = str1+str2+10+20;
? ? ? ? System.out.println(ret1);
? ? ? ? System.out.println(ret2);
? ? ? ? System.out.println(ret3);
? ? }
任何类型的数据和字符串进行拼接结果就是一个字符串
字符串中的+号就是拼接的意思

? ?public static void main(String[] args) {
? ? ? ? int a = 10;
? ? ? ? int b = 20;
? ? ? ? System.out.println("a = " + a + " b = " + b);
? ? ? ? System.out.println("a+b="+(a+b));?? ?//a+b=30
? ? ? ? System.out.println(10+""+20);?? ??? ?//1020
? ? }

变量:成员变量:实例成员变量 静态成员变量(类变量) 类内部,方法的外部
?? ? ?局部变量:一般实在方法内部的变量
变量的作用域:变量的范围


一个变量只能包含数字字母下划线美元符
数字不能开头
不推荐下划线$开头
不要使用拼音
小驼峰 见名知意

字面值常量:10 20 1.0F true "abc"
final修饰的量为常量: final int A = 10;常量在使用前必须进行初始化


? ? public static void main8(String[] args) {
? ? ? ? byte b = 10; ? ?//-128 --- 127
? ? ? ? System.out.println(b);
? ? }
? ? public static void main7(String[] args) {
? ? ? ? int a = 1;
? ? ? ? boolean b = (boolean) a;//错误
? ? ? ? boolean c = true;
? ? ? ? int d = (int)c; ? ? ? ? //错误
? ? }
? ? public static void main6(String[] args) {
? ? ? ? int a = 10;
? ? ? ? long l = 11; ? ?//long b = a; //把小类型给大类型,隐式类型转换
? ? ? ? a = (int)l;

? ? ? ? double d = a;
? ? ? ? int c = (int)d;

? ? ? ? float f = a;
? ? ? ? int c2 = (int)f;

? ? }
大的数据类型给小的数据类型要进行强制类型转换
显示类型转换,把小类型给大类型 隐式类型转换
强制类型转换不是光看字节大小决定的,例如float 和 int 之间的类型转换
boole和int之间不能进行相互转换的,boolean类型中有true 和false两种值
如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但是可能精度丢失
将一个字面值常量进行复制的时候,java会自动针对数字范围进行检查


? ?public static void main(String[] args) {
? ? ? ? int a = 10;
? ? ? ? long b = 20;
? ? ? ? //int c = a + b;//报错是因为编译器自动进行类型提升,受限会把a提升为long类型,然后和b进行运算,结果为long类型
? ? ? ? long c = a + b;
? ? ? ? long c = (int)(a+b);

? ? }
数值提升问题:

?public static void main(String[] args) {
? ? ? ? byte a = 1;
? ? ? ? byte b = 2;
? ? ? ? byte c = a + b ;//错误,因为a和b都是一个字节,计算机在处理小于一个自己的数的时候,会把小于四个字节的提升为4个字节再进行运算
? ? ? ? byte c = 1 + 2 ;//不会报错,是因为byte d = 3
? ? ? ? //byte c = (byte)a+b
? ? ? ? System.out.println(c);
? ? }
CPU按照4个字节去从内存中读写数据的,为了硬件式实现方便,byte short 一般都会提升为4个字节的类型
常量是在程序编译的时候就知道这个地方是几了
变量是在程序运行的时候才会去取这个数据

不同类型的数据混合运算,范围小的会提升为范围大的
对于short byte这种4个字节小的类型,会先提升为4个字节int再运算

int转换为String类型
? public static void main(String[] args) {
? ? ? ? //int转换为字符串
? ? ? ? int a = 10;
? ? ? ? String str1 = a +"";
? ? ? ? System.out.println(str1);
? ? ? ? String str2 = String.valueOf(a);
? ? ? ? System.out.println(str2);
? ? }
String转换为int
?public static void main(String[] args) {
? ? ? ? String s = "10";
? ? ? ? int num = Integer.valueOf(s);
? ? ? ? System.out.println(s);
? ? }
进行转换的时候需要进行的是拿到包装类,进行转换

变量+运算符=表达式

?public static void main13(String[] args) {
? ? ? ? int a = 1;
? ? ? ? int b = 2;
? ? ? ? System.out.println(a / b);//结果为0
? ? ? ? /*int c = 10;
? ? ? ? int d = 0;
? ? ? ? System.out.println(c/d); ?//报错,错误类型为算数异常,除零异常,*/
? ? }
取模运算
? ?public static void main(String[] args) {
? ? ? ? int a = 10;
? ? ? ? int b = 3;
? ? ? ? System.out.println(a%b);//1
? ? ? ? System.out.println(11.5%2.0);//1.5 ?//百分号取余可以求小数
? ? ? ? System.out.println(-10 % -3);//-1
? ? ? ? System.out.println(-10 % 3);//-1
? ? ? ? System.out.println(10 % -3);//1
? ? }


? ? public static void main(String[] args) {
? ? ? ? short s = 1;
? ? ? ?// s = s + 1;编译会报错,因为转化为int转化为了short
? ? ? ? s += ?1;//帮你进行强制类型转换
? ? ? ? System.out.println(s);
? ? }
? ? public static void main15(String[] args) {
? ? ? ? int a = 10;
? ? ? ? a += 1;
? ? ? ? a = a + 1;
? ? ? ? System.out.println(a);
? ? }

? ?public static void main(String[] args) {
? ? ? ? int a = 10;
? ? ? ? ++a;//后置++
? ? ? ? a++;
? ? ? ? //int b = a++; 11 先使用后++
? ? ? ? //int b = ++a; 10 先++后使用
? ? ? ? System.out.println(a);
? ? }此结论适用于-- --

关系运算符的返回值要么是true要么是false
? ? public static void main(String[] args) {
? ? ? ? int a = 1;
? ? ? ? int b = 2;
? ? ? ? System.out.println(a == b); //false
? ? ? ? System.out.println(a != b);//true
? ? ? ? System.out.println(a > b);//false
? ? ? ? System.out.println(a < b);//true
? ? ? ? System.out.println(a >= b);//false
? ? ? ? System.out.println(a <= b);//true
? ? }

逻辑运算符
&& ?只有前后两个表达式都为真的时候,整体才为真,短路,如果表达式1为假,就不会执行表达式2了
|| ?? ?或者 逻辑或表达式1||表达式2只要有一个为真的时候,那么整体为真,短路如果表达式1为真了,那就不执行表示式2了
! ?后面跟布尔表达式 ?!true =false !false = true

? ?public static void main20(String[] args) {
? ? ? ? int a = 110;
? ? ? ? int b = 20;
? ? ? ? //System.out.println(!a < b);编译报错,后面只能是boolean表达式
? ? ? ? System.out.println(!(a<b));//编译不报错
? ? }

不推荐 ?& |
? ?public static void main(String[] args) {
? ? ? ? System.out.println(10 > 20 && 10 / 0 ==0);
? ? ? ? System.out.println(10 > 20 || 10 / 0 ==0);
? ? ? ? //System.out.println(10 > 20 & 10 / 0 ==0); ?//非短路会报错
? ? ? ? //System.out.println(10 > 20 | 10 / 0 ==0);
? ? }

按位& | ?~ ?
&如果对应位有0,则这一结果就是0
|如果有1就是1,其余都是0
^异或一样的位置上就是0不一样的位置上就为1?
0^n=n
n^n=0
~ 0-->1 1-->0

二进制转十六进制:4位放一起转为相应的十六进制
二进制转八进制: 3位数一起转为相应的八进制


移位运算符:<< >> >>>
<< 相当于乘法,左移一位,左移不管正数负数右侧补0,相当于乘法,*2
>> ?前面补符号位,相当于除法,右移以为相当于除以2的一次放,右移两位相当于除以2的平方
?-1: 1111 1111 >> 1111 1111 -1
>>>无符号右移,不管符号位是0还是1统一补0 ?1111 1111 >>> 0111 1111
没有无符号左移没有
移动负数位或者移动位数过大都是没有意义的

关键字不能作为变量

顺序结构
选择分支结构if-esle switch
switch 的参数?
可以做switch参数的基本类型:char byte short int
能做参数的特殊类型: 枚举类型 字符串类型
不能做switch参数的进本类型:float double long boolean
循环结构


?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:19:57  更:2021-10-13 11:21:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:35:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码