Java运行机制
如何跨平台 通过不同系统上的虚拟机
.java文件通过编译转为.class文件 在虚拟机中执行
jdk 包含jre jvm 编译工具,打包工具
jre 运行环境 包含jvm
注释
单行注释 // 快捷 ctrl+/
多行注释 /* */ 快捷 ctrl+shift+/
文档注释 /** */在其他类下调用时 鼠标光标移动到所调用类时会显示出提示。
关键字
特殊含义的单词 用作专门用途的字符串
关键字所有字母都为小写
保留字同关键字一样 相当于先注册但还未使用
标识符
Java对各种变量,方法,类等要素的命名
命名规则
有26个英文字母大小写,0-9,_ 和$组成数字
数字不能开头,严格区分大小写,长度无限制
不能是关键字或保留字,但可以包含关键字和保留字
标识符中不能含有空格
命名规范
见名知意
包名:多单词组成时所有字母小写xxxyyyzzz
类名,接口名:首字母大写,多单词所有首字母大写XxxYyy
变量名,方法名:首字母小写 多单词 后面单词首字母大写userName
常量名:所有字母大写 下横线连接XXX_YYY_ZZZ
Java变量
值可以改变的量,是一个存储单元,是内存中的一块空间
内存 运行时使用,硬盘静态的
使用变量前要 进行申请 声明 申请空间
声明变量的语法
数据类型(必须明确)【修饰符】 变量名=值;
Java基本数据类型
程序中所有数据都需明确数据类型,不同的类型,存储空间不同,运算规则不同
基本数据类型
数值型
---8种 结构简单
整数型
byte 1字节 0000 0000 0111 1111=127 八个bit位
short 2字节
int 4字节
long 8字节
System.out.print(Integer.MAX_VALUE);
整数默认字面量为int long类型后要加L
int x= 0x11 十六进制
x=17
浮点型
float 4字节
double 8字节
有两种表示形式 正常表示,科学计数法
精度范围不同 小数位精度不同
小数的保存是以近似值保存
浮点型默认字面量为double型 float后加F
布尔型
boolean
Java中只能用true false表示真假
字符型
char来表示单个的字符 由编码表表示
单引号‘ ‘ 表示单个的字符
运算可转为十进制编码后运算
引用数据类型
类
接口
数组
基本数据类型转换
默认转换
小类型转为大类型
byte,short,char ---int ---long--- float---double
由于整数和小数的存储方式不同,八个字节的long型可以转化为四个字节的float型。
强制转换
int a=258; bate b=(byte)a;
int中a为 0001 0000 0010
转换为byte 只有 0000 0010
输出结果为2 数据丢失
float a=10.55f; long b=(long)a; b=10;精度丢失
在混合运算时默认将小类型转换为大类型
运算符
算术运算符
+,-,*,/,%,++,--
“+” 加法的运算, 字符串的连接
int a=1 ,b=2; char x='刘'; String y="abc"; System.out.println(a+b);3 System.out.println(x+a);21017 System.out.println(x+y);刘abc
++ 自增 -- 自减
int c=5; int d=c++ + 3; System.out.println(d);d=8; c=6 int c=5; int d=++c + 3; System.out.println(d);d=9; c=6
先将c与3运算后再自增 ++在后面 先运算后++
++在前先++后运算
关系(比较)运算符
< , >, ==,!=,<=,>=
int c=5; int d=3; System.out.println(c==d);flase
==和!=除了基本数据类型比较还可进行引用数据类型比较
String s="abc"; String a="ab"; System.out.println(a==s); flase
逻辑运算符
!,& , | , &&,||
int a=10; int b=5; int c=7; System.out.println(a<b & b<c);//flsae System.out.println(a<b && b<c);//flase System.out.println(a<b & ++b<c); System.out.println(b);b=6 b=5; System.out.println(a<b && ++b<c); System.out.println(b);b=5
&& || 短路与 短路或
当与中由flase后边不运行
当或中有true后边不执行
^ 异或 不同为真相同为假
赋值运算符
= ,+ = ,- = , * = ,/ =
int e=10;//注意数据类型是否满足数据类型 short m=1; m+=1; short m=(short)(s+3) // m=m+1;报错 1默认为int型 会进行强制转换
条件运算符
int a=10; int b=5; int max=(a>b)?a:b; System.out.println(max);10
位运算符
<< 左移 >>右移 有符号的,>>>无符号的右移
&,|,^,~ 与,或,异或,非
位运算针对bit位进行运算
package day2; public class Dome3 { public static void main (String[] args){ int a=3; int b=4; /* a 0000 0011 b 0000 0100 */ System.out.println(a<<1);// a 0000 0110 =6 有符号的 System.out.println(a>>1);// a 0000 0001 =1 int m=-3; // m 1111 1111, 1111 1111 ,1111 1111, 1111 1101 =-3 无符号的 // m 0111 1111, 1111 1111 ,1111 1111, 1111 1110 =2147483646 System.out.println(m>>>1); /* a 0000 0011 3 0000 0000,0000 0000,0000 0000,0000 0011 b 0000 0100 4 & 0000 0000 0 | 0000 0111 7 ^ 0000 0111 7 相同为0 不同为1 ~ 1111 1100 -4 1111 1111,1111 1111,1111 1111,1111 1100 */ System.out.println(a&b);//0 System.out.println(a|b);//7 System.out.println(a^b);//7 System.out.println(~a);//-4 } }
控制台输入
import java.util.Scanner;//导入java.util包的scanner类 public class Dome4 { public static void main(String[] args){ Scanner a= new Scanner(System.in); //在Java前中期提供的交互类 前期没有操作界面 System.out.println("输入");//在控制台输入数据,并读取到程序中 int s= a.nextInt();//scanner对象会读取数据,程序运行到此会阻塞,输入完成,按下回车结束输入 System.out.println(s); } }