jvm java虚拟机里存放的是.class文件。
java虚拟机需要的是class文件,jvm不是跨平台的。
关键字一共53个,必须小写
目前 true
若有注释.java文件必须是一个公共类
才能生成文档。
-----------------------
学习进制与原反补码的目的是为了深入了解java
源码。
-------**------------*-–
小数的十进制转换二进制绝大部分是无限位数
变量是java中最小单位的容器。
char 以u16进行编码,汉字占2个字节,英文占1个字节
所有码表默认兼容 ISO8859-1(西欧码表0-255)
---------------–------–**–
变量在哪({})定义,就在哪使用;
如果数字太大java内也可划分标记例如 int a = 123_2_2_3_5;
类型转换
short s = ‘0’;没有问题,会类型检查是字符类型数据要进行赋值。
char c = s; char不能转换成其他类型,因为char类型不能有负数
-0表示当前类型的最小值。
-----**--------–--—––--–-
使用05-everedit写代码时,先设置右下角设置,GB2312
---------------------**-------
运算符
运算符的分类:算数运算符、赋值运算符、
比较(关系)运算符;
逻辑运算符、位运算符、三目(三元)运算符;
算数运算符:+、 -、 *、 /、 %、 ++、 --、
javac检测语法是否有误,运用java指令时
检测程序逻辑是否有误。
加法、
实例:
public class QWQ{public static void main(String[] args){
//操作运算符+的作用–>相加、字符串连接符
int a = 1; int b = 2;
//字符常量遇到正数变量就会转换成相应的编码值;
//例如
System.out.println(a+‘b’);
//的结果为98
System.out.println(a+b+“k”);
//整数变量遇到字符串就拼接,字符串可以拼接任何数据;
Sysrem.out.println
(“今天是星期”+a);
}}
除法 、
public class QWQ{public static void main(String[] args){
int a = 1;int b = 2 ;
//java中除法/的注意情况
//在java中所有参与运算的数据都为整型,则结果一定为整型如果有浮点型的数据参与运算,则结果一定是浮点型;
Sysrem.out.println(a/b);
//结果为0;
System.out.println(a*1.0/b);
//结果为0.5;
//java中整数不能除0,
ArithmrticeException—算数异常;
//java中小数允许除0
//但是会报Infinity(无穷)
被除数为0.0时除0;则报NaN—not a number不是一个数
}}
%取余、
public class QWQ{public static void main(String[] args){
//% 取余数的注意事项
//取余结果的正负和被除数有关,也就是%左边的正负有关系
System.out.println();
}}
java中的++与–、
public class QWQ{public static void main(String[] args){
//++ 与–的注意事项与使用方法
int a = 1; int b = 2;
//
System.out.println(a++);
System.out.println(++a);
//结果都为2
//如果++或者–修饰数据或者变量的后面例如
//a++,a–,则先进行传值,如果放在前面则先自行加一或者减一,再进行传值;
//例题
System.out.println((b++)+(++b)+(b++)+(–b);
2+4+4+2
//= 右边的最左边如果改变了变量值则会影响右边的变量值
System.out.println();
如果类型变量的值超出范围,默认进行强制类型转换
包括byte、short、char、
例如byte a = 127;
b++;则输出结果为-128;
}}
–--*–-–**--–-------–-**-
赋值运算符:
public class QWQ{public static void main(String[] args){
//赋值运算符、 一般符号为 = ,把右边的值赋予给左边;底层默认加强制类型转换;
扩展: += -= *= /= %=
&=(按位与等) |=(按位或等)、
^=(按位异或等) >>=(右移等) <<=(左移等) >>>=(无符号右移等);
例如
int a = 1;
int b = 4;
a += b; 运算结果为a= a+b;结果为5;
默认强制类型转换
定义形式还可以:byte:b1=1,b2=2,b3=3;
java不支持连续等于,例如byte= a=b=1;
java支持连续赋值
例如:int a =3;
等于号= 左边从左往右依次编译,变量都有了具体的值。右边改变的值不能影响左边已经编译好的值;
int b = a+=a-=a;
}}
--------–––-**---–-*--
使用比较运算符时,得到的结果一定为布尔值:true或false
例如:System.out.printlb(2<0);输出结果则为false
-––**---------------------–-------
逻辑运算符:
用于连接左右两边是布尔值或者布尔表达式的符号。
表达式:用于连接变量或者数据且符合java语法的式子。
比如算数表达式:a+b
&(逻辑与);| 逻辑或; ^ 逻辑异或; !逻辑非
&& 双与 ||双或
逻辑与
比较关系a>b b>c
class LuoJi{public static void main(String[] args){
//定义变量
int a =4; int b = 5; int c = 6;
System.out.println( (a>b) &(b>c));结果为false
}}
与&运算规律:两个比较只要有一个false,结果必定为false
|逻辑或运算规律:两个比较只要有一个true,则结果必定为true;
逻辑异或 ^ 运算规律:如果两边布尔值一样,则结果为false
如果不同为true(同性相斥,异性相吸)
逻辑非!:对结果取反,如果有奇数个!结果取反,如果是偶数个!
则结果不变;
------*----------------------------------------
&&双与和&单与 运算规律一致
但是如果左边运行结果为false时,执行短路
符号右边不运行
例如:
System.out.println((a++!b)&&(c–>b); );
System.out.println(a);a输出结果为5
System.out.println©;b输出结果为6
||双或和|单或 运算规律一致
但是如果左边运行结果为true时,执行短路
符号右边不执行
开发中常用双与双或;
–**–--------——**-----—
扩展:
如果 || 与 &&同时出现在同一个表达式中,||在&&前面,如果
||发生了短路,则会把后面代码一起短路掉
System.out.println(true||xx<xxx)
-–--–---------–--*––--**–*
位运算符
所有要操作的数据要转成二进制补码形式;
&(按位与)、|(按位或)^(按位异或)、~(按位取反)
(左移) <<(右移) >>>(无符号右移);
class XX{public static void mian(String[] args){
int i = 4;
System.out.println(i&2 );结果为0;
}}
位运算操作实例
00000000 000000000 00000000 000000100 int 4
00000000 000000000 00000000 000000100 int 2
操作&(遇0则0)
00000000 000000000 00000000 000000100
00000000 000000000 00000000 000000010
00000000 000000000 00000000 000000000 0
--**–------------------
如何通过位运算&判断一个数是否是整数
将整数和 整数 1与,如果末位为0则为偶数,否则为奇数;
正数&任意整数--------都为正数;
---–----------------–**–-*
操作位运算 或 |
遇1则1
00000000 000000000 00000000 000000100
00000000 000000000 00000000 000000010
00000000 000000000 00000000 000000110 6
任意整数 | 0 -----则等于本身;
负数|任意整数-----为负数;
--------------------––--–--
操作 ^(相同则0,不同则1)
00000000 000000000 00000000 000000100
00000000 000000000 00000000 000000010
00000000 000000000 00000000 000000110 6
-********************************************–--
扩展: 按位异或扩展
class xx{public static void main(String[] args){
//定义变量
int a = 4;
int b = 5;
一个整数按位异或另一个整数两次,结果还是本身
原理:两个数相同则值为零;
System.out.println(b^b^a);
}}
按位异或的拓展应用
交换两个变量的整数值
class XX{public static void main(String[] args){
int a = 4;
int b = 5
System.out.println(“a的值为”+a+“b的值为”+b);
正常换位
int temp = a;
a = b;
b = temp;
运用按位异或运算换位;
a=a^b;
b=a^b;
c=a^b;
输出结果为a和b的值互换
求和
a=a+b;
b=a-b;
a=a-b;
}}
三个操作效率由高到低排序:1、按位异或;2、求和;3、中间变量;
按位异或的限制:按位异或只能是整数;
求和换位的限制:一般是整数;
在开发中最常用的是中间变量;原因1、简单;2、明了、3、可以适用于任何数据;
----------------------––-––--
按位取反 ~ 的位运算操作
所有位都按位取反
00000000 000000000 00000000 000000100
11111111 111111111 11111111 111111011
位运算符演示:
(左移)<< (右移)>> >>>(无符号右移)
(右移)>> :如果是正数,往右移动几位在左边最高位补几个0
如果是负数,往右移动几位,在最左边最高位补几个1
(左移)<< :无论正负数,往左移动几位就在最右边补几个0
>>> (无符号右移):无论正负数,往右移动几位就在最左边最高位补几个0;
class xx{public static void mian(String[] args){
int a = 5;
操作
System.out.println( a>>2);
System.out.println( a<<2);
System.out.println( a>>>2);
}}
00000000 000000000 00000000 000000101 5 (补码)
操作>>2 只适用于部分正数
【00】000000 000000000 00000000 0000001(01) 移动后结果为1
操作<<2 只适用于部分整数
(00)000000 000000000 00000000 000000101【00】 移动后结果为20
操作a>>>2 结果一定是正数
[00]000000 000000000 00000000 0000001(01)
()内为移动的值,【】内为补的值
-----–--–----------––*--
移位原理;java对移动的位数根据数据类型的位数进行取余,
之后才是需要移动的位数;
只针对整型数值;
然后再操作;byte short char除外,
此三种类型在底层以32位进行存储表示;
----––––**---------------
~a 一元
a+b 二元
三目(三元)运算符:
格式:
表达式 ? 表达式值1:表达式值2;
执行流程
先去计算表达式的值,若为true,就执行表达式1,返回值1
若为false 就执行表达式2,返回值2;
两个表达式可以不一样,保证两个表达式值的类型在返回值
类型的范围内;
public class XX{public static void mian(String[] args){
//求两个变量的最大值
//把最大值给新变量
int a = 3;
int b = 6;
int max = a>b?a:b;
System.out.println(max);
//求三个整数的最大值
int a = 2;
int b = 3;
int c = 4;
//两两比较
//拿着最大值和第三个变量比较
int max =a>b?a:b
System.out.println(max>c?max:c);
利用三目嵌套,一步比较三个数字最大值:
System.out.println(a>b?(a>c?a:c):(b>c?b:c));
三目表达式的结论:结果一定是值。
在参与比较中。算数运算符优先
}}
-----------–------------*–
tips:
java中的优先级排列
()~++--!*/%+-<<>>>>>关系 逻辑&|^三元赋值
--------------------------
关于键盘录入:
步骤:1、导包 需要使用的类和本类不在一个包下
impotr java.util.*;
2、找到Scanner
Scanner sc = new Scanner(System.in);
3、获取数值
int a = sc.nextInt;
实例
public class{public static void main(String[]) args{
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(a);
}}