java学习 基础

Java三大版本

  1. javase 标准版 占领桌面端(基础)
  2. javame 移动版 嵌入式开发、占领手机端
  3. 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程序运行机制既有编译型也有解释型。

注释

养成书写注释的习惯!!!

  1. 单行注释

  2. 多行注释

  3. 文档注释

标识符

类名、变量名以及方法名都被称为标识符。

不可以使用关键字作为变量名、方法名

大小写敏感

以字母、$、_ 开始命名

语言类型

  1. 强类型语言

    要求变量先定义后使用
  2. 弱类型语言

    数据类型能够被忽略的语言
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);//计算正确

自动转换 低--高,系统自动执行

变量作用域

  1. 类变量
  2. 实例变量
  3. 局域变量
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语句完成此功能。

Java学习--基础的更多相关文章

  1. [ Java学习基础 ] Java构造函数

    构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只 ...

  2. [ Java学习基础 ] Java的继承与多态

    看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...

  3. [ Java学习基础 ] Java的抽象类与接口

    一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...

  4. java 学习基础学习单词及java关键词

    在JAVA学习中我们难免会犯一些逻辑错误,语法错误,和一些运行错误,对于英语不好的人,就的记下下面的2常用单词,有助于我们提高在使用软件编写代码的速度和代码调试,能更便捷的找出错误,知道1中的保溜关键 ...

  5. java学习基础部分

    JVM虚拟机的位置: 垃圾回收在java程序运行过程中自动进行,程序员无法精准控制和干预. Java程序还会出现内存泄漏和内存溢出. Jre = jvm+java se标准类库 Jdk = jre + ...

  6. java 学习基础知识点拾遗 导航页

    每种编程语言的知识点都是很多很杂的,java也是如此 相信很多人学习的过程中都是深一脚浅一脚,最基础的东西可能有些也不是非常确定 整理了最基本的一些知识点,可以说是java入门的-1层级别的,作为自己 ...

  7. JAVA学习基础知识总结(原创)

    (未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...

  8. Java学习---基础知识学习

    2016-07-23  周六 利用键盘输入的时候需要抛出异常 ,直接快捷键 ctrl + 1 ;定义数组 int score[] = new int[4]  ;  只有4个数字BufferedRead ...

  9. [ Java学习基础 ] Java异常处理

    一.异常概述 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用Sys ...

随机推荐

  1. 第06组 Beta冲刺 (5/5)

    目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2. 方梓涵 3.曾丽莉 4.黄少丹 5. 董翔云 6.鲍凌函 7.杜筱 8.詹鑫冰 9.曹兰英 10.吴沅静 1.3 冲刺成果展示 1.1 ...

  2. Go到底能不能实现安全的双检锁?

    不安全的双检锁 从其他语言转入Go语言的同学经常会陷入一个思考:如何创建一个单例? 有些同学可能会把其它语言中的双检锁模式移植过来,双检锁模式也称为懒汉模式,首次用到的时候才创建实例.大部分人首次用G ...

  3. Base64编码知识详解

    在我们进行前端开发时,针对项目优化,常会提到一条:针对较小图片,合理使用Base64字符串替换内嵌,可以减少页面http请求. 并且还会特别强调下,必须是小图片,大小不要超过多少KB,等等. 那么,B ...

  4. 『忘了再学』Shell基础 — 32、Shell中test测试命令详解

    目录 1.test测试命令 (1)test命令介绍 (2)test命令使用方式 (3)示例 2.按照文件类型进行判断 3.按照文件权限进行判断 4.两个文件之间进行比较 5.两个整数之间比较 6.字符 ...

  5. 打字练习-编程语言关键字系列-java

    小编整理的java关键字,内容如下:abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, ...

  6. 分享一个网上搜不到的「Redis」实现「聊天回合制」的方案

    前言 为什么说网上搜不到,因为关于聊天回合制的方案作者本人快把百度搜秃噜了也没找到,好在最终是公司一个关系不错的大佬帮提供了点思路,最终作者将其完整实现了出来. 分享出来大家可以收藏,万一你哪天也碰到 ...

  7. JVM学习笔记-从底层了解程序运行(一)

    1:JVM基础知识 什么是JVM 1. java虚拟机,跨语言的平台,实现java跨平台 2. 可以实现多种语言跨平台,只要该语言可以编译成.class文件 3. 解释执行.class文件 java是 ...

  8. DAST 黑盒漏洞扫描器 第四篇:扫描性能

    0X01 前言 大多数安全产品的大致框架 提高性能的目的是消费跟得上生产,不至于堆积,留有余力应对突增的流量,可以从以下几个方面考虑 流量:减少无效流量 规则:减少规则冗余请求 生产者:减少无效扫描任 ...

  9. SAP - 拆包,组件入库

    场景: 一个成品商品,例如汽车,有很多零部件:车轮,框架,发动机等.以整体形式发货过账,在遇到质量问题客户退货情况,需要把汽车拆开,然后零部件退回到库(按照BOM结构拆卸). MB1A/MIGO:发货 ...

  10. 关于android里activity之间利用button组件使用intent跳转页面

    在需要跳转的activity 中 添加 Button button = findViewById(R.id.login);button.setOnClickListener(new View.OnCl ...