Java程序运行机制

  • 编译型(complie)
    (全部JAVA代码->计算机可以执行的代码)
    #操作系统 C/C++
  • 解释型
    (实时编译解释)
    #网页 Java
  • java 快捷键 java 快捷键sout_intellij-idea

Java文件经过JAVA编译器编译成.class文件,接着将class文件放入虚拟机JVM中的类装载器中,通过校验器确定代码是否正确,最后到操作系统时才通过解释器运行代码。


IDEA一些快捷编辑语句

  • psvm
  • java 快捷键 java 快捷键sout_intellij-idea_02

  • sout

常用快捷键

  • crtl+shift+enter 当前行任何地方可以快速在末尾生成分号
  • ctrl+] 或 ctrl+[ 大括号匹配,你可以将光标定位在某个大括号一边,定位另一边
  • crtl+点击 直接查看包装类的源码。

JAVA基础语法

1.注释

创建空项目后,点击文件按钮->选择新模块->选择JAVA模块

完成后,再次点击文件按钮->选择项目结构->选择项目设置sdk(注意两个版本号须相同)

java 快捷键 java 快捷键sout_java_03

  • 单行注释
//单行注释
//输出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.标识符

  • 关键字
  • java 快捷键 java 快捷键sout_开发语言_04

  • 注意点
  1. 所有标识符都应该以字母(A-Z/a-z),美元符号($)、或者下划线(_)开始。
  2. 首字母之后字母(A-Z/a-z),美元符号($)、或者下划线(_)或数字的任意字符组合。
  3. 不能用关键字命名
  4. 标识符是大小写敏感的。

3.数据类型

  • 强类型语言 (要求十分严格)

变量的使用要严格规定,所有变量都必须先定义后才能使用。

  • 弱类型语言
  • Java的数据类型分为两大类
  1. 基本类型 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;
  1. 引用类型 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