Java程序运行机制
- 编译型(complie)
(全部JAVA代码->计算机可以执行的代码)
#操作系统 C/C++ - 解释型
(实时编译解释)
#网页 Java
Java文件经过JAVA编译器编译成.class文件,接着将class文件放入虚拟机JVM中的类装载器中,通过校验器确定代码是否正确,最后到操作系统时才通过解释器运行代码。
IDEA一些快捷编辑语句
- psvm
- sout
常用快捷键
- crtl+shift+enter 当前行任何地方可以快速在末尾生成分号
- ctrl+] 或 ctrl+[ 大括号匹配,你可以将光标定位在某个大括号一边,定位另一边
- crtl+点击 直接查看包装类的源码。
JAVA基础语法
1.注释
创建空项目后,点击文件按钮->选择新模块->选择JAVA模块
完成后,再次点击文件按钮->选择项目结构->选择项目设置sdk(注意两个版本号须相同)
- 单行注释
//单行注释
//输出Hello World
- 多行注释
/*
多行注释
多行注释
多行注释
多行注释
*/
- 文档注释 JavaDoc
/**
* @Description HelloWorld
* @Author zhangchuhui
*/
- 有趣的代码注释
有趣的代码注释
/***
* .,:,,, .::,,,::.
* .::::,,;;, .,;;:,,....:i:
* :i,.::::,;i:. ....,,:::::::::,.... .;i:,. ......;i.
* :;..:::;::::i;,,:::;:,,,,,,,,,,..,.,,:::iri:. .,:irsr:,.;i.
* ;;..,::::;;;;ri,,,. ..,,:;s1s1ssrr;,.;r,
* :;. ,::;ii;:, . ................... .;iirri;;;,,;i,
* ,i. .;ri:. ... ............................ .,,:;:,,,;i:
* :s,.;r:... ....................................... .::;::s;
* ,1r::. .............,,,.,,:,,........................,;iir;
* ,s;........... ..::.,;:,,. ...............,;1s
* :i,..,. .,:,,::,. .......... .......;1,
* ir,....:rrssr;:, ,,.,::. .r5S9989398G95hr;. ....,.:s,
* ;r,..,s9855513XHAG3i .,,,,,,,. ,S931,.,,.;s;s&BHHA8s.,..,..:r:
* :r;..rGGh, :SAG;;G@BS:.,,,,,,,,,.r83: hHH1sXMBHHHM3..,,,,.ir.
* ,si,.1GS, sBMAAX&MBMB5,,,,,,:,,.:&8 3@HXHBMBHBBH#X,.,,,,,,rr
* ;1:,,SH: .A@&&B#&8H#BS,,,,,,,,,.,5XS, 3@MHABM&59M#As..,,,,:,is,
* .rr,,,;9&1 hBHHBB&8AMGr,,,,,,,,,,,:h&&9s; r9&BMHBHMB9: . .,,,,;ri.
* :1:....:5&XSi;r8BMBHHA9r:,......,,,,:ii19GG88899XHHH&GSr. ...,:rs.
* ;s. .:sS8G8GG889hi. ....,,:;:,.:irssrriii:,. ...,,i1,
* ;1, ..,....,,isssi;, .,,. ....,.i1,
* ;h: i9HHBMBBHAX9: . ...,,,rs,
* ,1i.. :A#MBBBBMHB##s ....,,,;si.
* .r1,.. ,..;3BMBBBHBB#Bh. .. ....,,,,,i1;
* :h;.. .,..;,1XBMMMMBXs,.,, .. :: ,. ....,,,,,,ss.
* ih: .. .;;;, ;;:s58A3i,.. ,. ,.:,,. ...,,,,,:,s1,
* .s1,.... .,;sh, ,iSAXs;. ,. ,,.i85 ...,,,,,,:i1;
* .rh: ... rXG9XBBM#M#MHAX3hss13&&HHXr .....,,,,,,,ih;
* .s5: ..... i598X&&A&AAAAAA&XG851r: ........,,,,:,,sh;
* . ihr, ... . .. ........,,,,,;11:.
* ,s1i. ... ..,,,..,,,.,,.,,.,.. ........,,.,,.;s5i.
* .:s1r,...................... ..............;shs,
* . .:shr:. .... ..............,ishs.
* .,issr;,... ...........................,is1s;.
* .,is1si;:,....................,:;ir1sr;,
* ..:isssssrrii;::::::;;iirsssssr;:..
* .,::iiirsssssssssrri;;:.
*/
2.标识符
- 关键字
- 注意点
- 所有标识符都应该以字母(A-Z/a-z),美元符号($)、或者下划线(_)开始。
- 首字母之后字母(A-Z/a-z),美元符号($)、或者下划线(_)或数字的任意字符组合。
- 不能用关键字命名。
- 标识符是大小写敏感的。
3.数据类型
- 强类型语言 (要求十分严格)
变量的使用要严格规定,所有变量都必须先定义后才能使用。
- 弱类型语言
- Java的数据类型分为两大类
- 基本类型 primitive type
- 整数类型 byte、short、int、long
- 浮点类型 float(四个字节)、double(八个字节)
- 字符串类型 char(两个字节)
- 布尔类型 (一个字节)true 和false
//整数
int num0=10; //最常用
byte num1=10;
short num2=30;
long num3=30L; //Long类型要在数字后面加L
//浮点数
float num4=50.1F;
double num5=3.1415926;
//单个字符
char name='A';
//字符串
String name1='zhanghui';
//布尔值
boolean flag=true;
- 引用类型 reference type
- 类
- 接口
- 数组
字节
- 位bit :计算机内部数据储存的最小单位 10111100是一个8位二进制数
- 字节byte :计算机处理数据的基本单位,习惯上用B表示
- 1 B = 8 bit
- 字符:是计算机中使用的字母、数字、字和符号。
常见面试问题
// 整数拓展 进制问题 二进制0b 十进制 八进制0 十六进制0x
int i=10;
int i2=010; //八进制
int i3=0x10; //十六进制
//---------------------------------------------------------
//浮点数拓展 银行业务表示?
//BigDecimal 数学工具类
//---------------------------------------------------------
//float 表现有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全避免使用浮点数进行比较
//---------------------------------------------------------
//字符拓展
//---------------------------------------------------------
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
//所有的字符本质还是数字
//编码问题 Unicode 2个字节 0~65536 Excel 2的16次方 = 65536
//U0000 UFFFF
char c3='\u0061'; //Unicode编码
System.out.println(c3);
//转义字符
// \t 制表符 \n 换行
//输出结果
a
97
中
20013
a
//对象 从内存分析
//布尔值扩展
//boolean flag=true;
//if(flag){} 等同于 if(flag==true){}
4.类型转换
低--------------------------------> 高
byte,short,char->int->long->float->double
int i=128;
byte b=(byte)i; //内存溢出
//强制转换 (类型)变量名 高-->低
//自动转换 低-->高
System.out.println(i);
System.out.println(b);
//运行结果
128
-128;
//----------------------------------------------------------
/*注意点
1.不能对boolean进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出或者精度问题
*/
//数字之间可以用下划线分割
int money=10_0000_0000;
int years=20;
int total=money*years;
System.out.println(total); //输出-1474836480 内存溢出
//解决方案
long total1=(long)money*years;
System.out.println(total1); //正常输出 20000000000