Java基础篇:数据类型与运算符
java小兵又开始记笔记了
java跨平台运行
jre 虚拟机 ,编译一次可以到处运行
不同的操作系统,不同版本的虚拟机:linux 内核(centos 、红旗linux、Ubuntu)
高版本可以兼容版本(向下兼容)
本地jdk11 远程服务器
注意:高版本编译的类不能运行在低版本的java环境下。 低版本编译的类通常可以运行在高版本的java环境下。(不确切的问题,可能会在高版本不支持低版本 的某些特性)
java 语言的特性
- 面向对象的编程语言
- 跨平台性(java虚拟机(JRE))
- 可靠性、安全性(底层实现性保证了一定的安全性,内存回收自动完成(C语言,手工编写程序实 现内存的回收,存在忘记回收内存的问题))
- 分布式(互联网的) 多线程(同时做多件事情),(单cpu模拟多任务 多颗cpu)
java注释:
1.单行注释://
2.多行注释:/* 注释内容 */
3.文档注释:/** 注释内容*/ api
数据类型与运算符
程序=指令+数据
数据:123 我的中国 12.33 A b True False
分类:
值的特性两大类:
1.数值型数据 :
-
整型 :
-
字节型(byte 1个字节占8位 )
-
短整型(short 2个字节)
-
整型 (int 4个字节)
-
长整形(long 8个字节)
浮点型 :
-
单精度(float 4个字节)
-
双精度(double 8个字节)
2.非数值型:
- 字符型(char 16位unicode) ‘A’ ‘b’
- 布尔型(boolean 1) true false
- 字符型(String不是基本数据类型,引用数据类型)
在内存中的存放方式:
- 基本类型(8种)
- 整型:字节类型、短整型、整型、长整型
- 实型:单精度、双精度
- 字符型(char)
- 布尔型(boolean)
- 引用数据类型
- 数组
- 类(字符串就是类的类型)
- 接口
我们使用数据类型,有转换问题:
前提:同类型的数据
1.自动转换
整型碰到实型,会自动转成实型 8+1.23=9.23 小(所占空间)碰到大的
2.强制转换
实型要转整型 1.23 -> 1 大的转的小 字节类型 -> 整型
变量
数据如何在程序的表示的,数据其实在内存中表示
需要数据内存空间来 变量
为方便识别数据空间,给空间起一个名字,就做变量名
变量名起名原则:
1.字母、数字、下划线和$组成 2.不能以数字开头
3.不能是关键字(50个,包括class ,public 在java中具有特殊的含义词)和保留字(现在没有使用, 将来有可能使用的单词(goto)) 4.见文知义 name num 5.驼峰命名法,首字母小写,若由两个或者两个以上单词组成,则除第一个单词外,其余单词的首字大写
比如:学生姓名 (student name) studentName
运算符
表示完数据,就型各种运算,数学运算 算术运算
(+ - * / %(取余运算) ++ --)
连续运算:计算原则:
1.在前 先运算再执行操作
int a=1,b=2,c;
c = ++a;// a=a+1 ;将a的值赋值给c c=2 a=2
2.在后 先操作再进行运算
int a=1,b=2,c;
c = a++;// a=a+1 ;将a的值赋值给c c=1 a=2
关系运算
比大小
> < == != >= <=
结果是布尔值(true\false)
java不支持连续比较
逻辑运算
!非 优先级高
逻辑与 && 逻辑或 ||
&& 存在短路问题,&&前表达式的值为假(false),后边的表达式不进行运算,结果为假 || 存在短路问题,||前表达式的值为真(true),后边的表达式不进行运算,结果为真
三目运算(三元)
语法:
表达式1 ? 表达式2 : 表达式3;
当表达式1的值为真时,返回表达式2的值;
当表达式1的值为假是,返回表达式3的值;
int a=1,b=3,c;
System.out.println(a>b);
c = a>b?a:b;// 计算两个数字中的最大值
System.out.println(c);
赋值
符合赋值运算
+= -= *= %=
int a=12;
a+=2;// a=a+2;
位运算
十进制 12
二进制 1100
八进制 014 0是一个标识位
十六进制 (0-9-a-b-c-d-e-f) 0xc 或者 0Xc
将数字转成二进制
符号 | 功能 |
---|---|
& | 按位与,同为真则为真 |
l | 按位或,有真则为真 |
~ | 按位取反,单目运算(高) |
^ | 异或,两个相同则为0,不同则为1 |
>> | 右移,向右移位,最高位补标识位 |
<< | 左移,向左移位,低位补零 |
instanceof
双目运算符
类型判断
语法:
对象 instanceof 类
判断左面对象是否为右面类或子类的对象,返回值是boolean
优先级的问题:
1.单目运算的优先级是最高的。
2.括号,可以改变运算的优先级。
3.赋值运算的优先级最低
4.算术运算 > 关系运算 > 逻辑运算>条件运算符>赋值运算符
5.运算的从左到右
例子:
int a=b=3,c=12;
c=a---b;// (a--)-b 不是a-(--b);