Java学习--基础
java学习 基础
Java三大版本
- javase 标准版 占领桌面端(基础)
- javame 移动版 嵌入式开发、占领手机端
- javaee 企业版 占领服务器端
Java的特性和优势
跨平台、可移植性、高性能、分布式、动态性、多线程、安全性
JDK、JRE、JVM
1. JDK: 开发工具 包含jre、jvm。真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境
2. JRE: 运行环境,包含jvm,编写的Java程序也必须要JRE才能运行
3. JVM: Java虚拟机,执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
运行机制
1.编译型:整个代码都翻译,转化成计算机可以执行的代码,执行速度更快
2.解释型:一句一句翻译,性能有所损失
Java源代码经过Java编译器转化成字节码(.class文件),再在JVM Java虚拟机里,字节码放在类装载器里面,有字节码校验器校验,再通过解释器解释给操作系统,走一步解释一步走一步解释一步,所以Java程序运行机制既有编译型也有解释型。
注释
养成书写注释的习惯!!!
单行注释
多行注释
文档注释
标识符
类名、变量名以及方法名都被称为标识符。
不可以使用关键字作为变量名、方法名
大小写敏感
以字母、$、_ 开始命名
语言类型
- 强类型语言
要求变量先定义后使用 - 弱类型语言
数据类型能够被忽略的语言
var A=5;
var B="5"
sumA=A+B;
sumB=A-B;
sumA=55,系统默认+字符连接符,将A转化为字符串类型;而sumB=0;系统认为-是算数运算符,从而将B转化为int类型,所以sum为5-5=0;
数据类型
基本类型(primitive type)
基本数据类型:整型、浮点型、字符型、布尔型
整数类型 —— byte、short、int、long
浮点类型 —— float、double
字符类型 —— char
布尔类型 —— boolean
eg:特殊标识
long num1 = 30L;
float num2 = 30.1F;
引用类型(interface type)
引用数据类型:接口(interface)、数组([ ])、类(class)
数据类型拓展
public class Demo1 {
public static void main(String[] args) {
//整数拓展: 进制 二进制 0b 八进制 0 十进制 十六进制 0x
int a1 = 10; //十进制
int a2 = 0b10; //二进制
int a3 = 010; //八进制
int a4 = 0x10; //十六进制
System.out.println(a1); // 输出10
System.out.println(a2); // 输出2
System.out.println(a3); // 输出8
System.out.println(a4); // 输出16
//浮点数拓展 float double (最好完全避免使用浮点数进行比较)
/* 有限的 有误差 接近但不等于
如果有银行业务表示 使用数学工具类 BigDecimal
*/
float b1 = 0.1f;
double b2 = 1.0/10;
double b3 = 1/10;
System.out.println(b1); //输出0.1
System.out.println(b2); //0.1
System.out.println(b3); //0.0 先按照整型数运算,所以运算结果是整型数0,而结果要求是double,则将0转换为double类型0.0
System.out.println(b1==b2);//false
float c1 = 999999999999f;
float c2 = 1+c1;
System.out.println(c1==c2); //true
//字符拓展 所有字符的本质还是数字
//编码: Unicode 范围 U0000~UFFFF
char d1 = 'a';
char d2 = '聪';
char d3 = '\u0069';
System.out.println(d1); //输出a
System.out.println((int)d1); //97 (强制转换int型)
System.out.println(d2); //聪
System.out.println((int)d2); //32874
System.out.println(d3); //i
}
}
类型转换
由于Java是强类型语言,所以要进行有些类型转换
由低到高 byte,short,char->int->long->float->double(注意:小数的优先级一定大于整数)
强制转换 (类型)变量名
高--低
int i =128;
byte =(byte)i;//内存溢出 范围-128~127
System.out.println(e2);//输出-128
//强制转换丢失精度
System.out.println((int)9.8);//输出9
System.out.println((int)56.23f);//输出56
溢出问题
int money = 10_0000_0000;
int year = 200;
long total = year*money;//默认是int
System.out.println(total);//溢出错误
long total1 =(long)money*year;
System.out.println(total1);//计算正确
自动转换 低--高,系统自动执行
变量作用域
- 类变量
- 实例变量
- 局域变量
public class Demo2 {
static int a = 32; //类变量
int b = 32;//实例变量,全局变量
public static void main(String[] args) {
int c = 32;//局部变量
System.out.println(a);//类变量直接输出
Demo2 demo2 = new Demo2();
System.out.println(demo2.b);//全局变量 new一个对象 引用输出
System.out.println(c);//局部变量 只能在这个方法里面 直接输出
}
}
命名规范
变量:首字母小写,驼峰原则
常量:大写字母,下划线
类名:首字母大写,驼峰原则
方法名:首字母小写,驼峰原则
运算
向上兼容
byte short int 互相运算后,最后是int;
如果操作数里有long,最后是long;
如果操作数里有float,最后是float;
自增
int d =1;
int e =d++; //先赋值 再自增 e=1 d=2
int f =++d;//先自增 再赋值 d=3 f=3
System.out.println(d);//输出3
System.out.println(e);//输出1
System.out.println(f);//输出3
i++ 先赋值 后自增
++i 先自增 后赋值
位运算
效率高 与底层打交道 主要用来对操作数二进制*的位进行运算*
左移<<
右移>>
/*
<< *2
>> /2
2*8 = 16 2*2^3
*/
System.out.println(2<<3);
字符串连接
int z =10;
int x =20;
System.out.println(""+z+x); //输出1020
System.out.println(z+x+"");//输出30
包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
格式:
package pak1.pak2;
一般利用公司域名倒置作为包名;
比如百度 www.baidu.com 包名为com.baidu.www
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,用import语句完成此功能。
最新文章
- bzoj1008快速面
- Distribution1:Distribution Reader
- Aristochart – 灵活的 HTML5 Canvas 折线图
- VisualStudio.gitignore git 忽略
- UML 之 四种关系
- arpg网页游戏之地图(四)
- 微信支付-JSAPI支付V3-查询退款
- js获取对象、数组的实际长度,元素实际个数
- HDU 1207
- 合并多段zip文件并解压缩
- deepin系统下安装git
- Python高级特性(一)
- 6 week work 3
- 字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD
- LinqToHubble介绍及简单使用步骤——LinqToHubble是对HubbleDotnet的封装
- Droptiles - 炫酷的 Metro 风格的层叠式 Web 面板
- 1111: [POI2007]四进制的天平Wag
- centOS7 vsftp ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) 启动失败问题?
- BLDC之六种霍尔检测换相排序表
- Spark Streaming Checkpoint反序列化问题分析
热门文章
- 【ACM程序设计】动态规划 第二篇 LCS&;LIS问题
- 【原创】快速理解Unicode和utf-8的本质
- SQL Server 2019企业版和标准版的区别?
- 架构师必备:HBase行键设计与应用
- MongoDB学习总览
- kafka消费
- 无法打开虚拟机“master”(D:\文档\Virtual Machines\master\master.vmx):未找到文件。是否从库中移除“master”?
- 修改jupyter notebook文件保存目录
- HTML,CSS,JS,DOM,jQuery
- UiPath培训教程