java基础知识——自学笔记

1.Java发展历史
1995年美国Sun公司向公众推出Java
2009年Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有
Java不仅仅是一门编程语言,同时也是一个技术平台
Java是当今最流行的软件开发语言之一,企业版本使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等

2.Java版本
1995年发布java1.0版本
1997年发布java1.1版本
1998年发布java1.2版本,里程碑版本,开始拆分为JavaSE、JavaEE、JavaME三个技术方向
2000年发布java1.3版本
2002年发布java1.4版本
2004年发布java1.5版本,在语法易用性上有了很多改变
2006年发布java1.6版本
2011年发布java1.7版本
2014年发布java1.8版本

3.Java1.2版本里程碑的版本,有了技术方向划分
JavaSE:标准版。是其他版本的核心基础,能用于开发桌面应用系统
JavaEE:企业版。用于开发企业级应用
JavaME:微型版。可以用于嵌入式设备系统

4.Java运行的5个步骤
java基础知识——自学笔记_第1张图片
编写源程序-编译源程序-装载-校验-运行

5.Java虚拟机
Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。不同的操作系统有不同的虚拟机。

java基础知识——自学笔记_第2张图片
6.Java语言特点
1)平台的无关性 一处编写,处处运行。跨平台(跨操作系统),同一套java程序在不同的操作系统中运行。JVM(java虚拟机)
2)面向对象 Java是一门面向对象的语言;面向对象(Object Oriented)简称OO
面向对象的三大特征:封装、继承、多态
面向对象与面向过程截然不同两种编程思想
3)健壮性=鲁棒性
异常处理机制、强类型机制要求每一个数据要有明确的数据类型、没有指针,GC垃圾回收机制,自动释放内存
4)分布式
提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等;
Java的RMI(远程方法调用)机制是开发分布式应用的重要手段;
5)多线程
java语言支持多线程编程,Java可以并发执行,Java提供同步机制允许共享数据
6)动态性
允许程序动态地装载运行过程中所需要的类;也可以通过网络来载入所需要的类;
Java中能进行运行时的类型检查

7.JDK、JRE、JVM关系
1)JDK是Java开发工具包(Java Development Kit)的简称,是一个软件。如果要用Java语言编写程序,就必须在计算机上安装JDK
2)JRE是Java运行环境(Java Runtime Environment)的简称。如果要在机器上运行Java程序,就必须要有JRE;
3)JVM(Java Virtual Machine)称为Java虚拟机,在Java平台中有着举足轻重的地位;
JVM可以理解为Java编译器和操作系统间的虚拟处理器;编译器编译出的字节码只要JVM认识即可;JVM再将字节码解释成操作系统认识的机器码;只要需要运行Java程序的设备,都需要安装JVM;
JDK>JRE>JVM

java基础知识——自学笔记_第3张图片

8.第一个java类
Java是面向对象的语言,面向对象的语言的程序的组成单位就是“类”;
使用关键字class可以声明类
如果类用public修饰的,要求:.java文件名和类名必须保持一致,大小写也要保持一致。如果类没有用public修饰的,文件名和类名可以不一致。但是,编译时产生的文件的名字和java类的名字保持一致。
java基础知识——自学笔记_第4张图片
9.输出
输出换行System.out.println(“hello world”);
输出不换行System.out.print(“hello world”);

类前面常常使用public修饰,成为公共类,具体含义暂时不用理解,后续将学习;
然而,用public修饰的类所在源文件命名就有要求:.java文件的名字必须与源文件中的class名字完全一致,大小写也需要一致;
在一个.java文件中可以有多个Java类;
最多只能有一个public类;
也可以没有public类;
实际编程中,尽量不要在一个文件中存在多个类,因为可读性比较差;

11.注释
单行注释 //
多行注释 /* /
文档注释 /
* */一般用于对类和方法进行功能说明文档注释
12.标识符
程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)包括:类名、变量名、常量名、方法名等等
标识符组成:字母、数字、下划线_、美元符号$。注意:标识符不能以数字开头。注意:避开关键词

13.转义字符
转义字符 说 明
\n 换行符,将光标移到下一行
\r 回车符,将光标移到当前行的开头
\t 制表符,将光标移到下一制表位
\ 输出反斜线
’ 输出单引号
" 输出双引号

14.输入
1)从控制台输入语句:
实例化Scanner对象Scanner input = new Scanner(System.in);
其中,input是Scanner对象的名称,可以随意改。使用时需要导包:
import java.util.Scanner;
2)接收控制台的输入的语句:
int num=input.nextInt();//整形
String str=input.nextLine (); //字符串
char ch=input.next().charAt(0); //字符
java基础知识——自学笔记_第5张图片

15.字符集(Charset)
是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等 ;
常见的字符集有:ASCII字符集、GB2312字符集、Unicode字符集等;
在计算机科学领域中,Unicode(统一码、万国码、单一码、标准万国码)是业界的一种标准,它可以使电脑得以体现世界上数十种文字的系统;
Unicode制定了三套编码方式,分别是UTF-8,UTF-16和UTF-32;通常使用UTF-8方式;
UTF-8用1到4个字节编码Unicode字符;它可以用来表示Unicode标准中的任何字符,UTF-8是ASCII的一个超集;
对于单字节的字符,字节的第一位为0,后面7位为这个字符的unicode码。对于英语字母,UTF-8编码和ASCII码相同;
对于n字节的字符(n>1),第一个字节的前n位都为1,第n+1位为0,后面字节的前两位一律为10;剩下的为这个字符的unicode码。
Java语言使用Unicode字符集;Java中的字符串都用Unicode字符集编码;
ASCII字符集 a值97 A值65

16.数据类型划分的意义
不同的变量有不同的用途,例如,可以用变量来表示年龄,或者用变量来表示成绩。而年龄只能是整数,而成绩却可能出现小数;
如果不把数据划分为不同的类型,那么就没有办法区分出数据之间的差别;
计算机可以根据不同的数据类型,把数据“合理”地存放到内存中;
计算机从内存中读取数据时,也可以根据其数据类型就能确认取到的数据的特征,从而正确地去处理;

17.数据长度
每种数据类型在内存中占有不同的长度;
计算机存储设备的最小信息单元叫“位(bit)”,又称之为“比特位”;
连续的8个位成为1个“字节(byte)”;
操作系统分配内存最少1个字节,即8 个位,而不是1个位;
长度越长,所表示的范围就越大;

18.java中的数据类型
Java中有两种数据类型分为基本数据类型和引用数据类型
1)基本的数据类型=原始的数据类型:8种
数值型:整形 byte\short\long\int
浮点型float\double
字符型 char
布尔型 boolean
2)引用的数据类型:类、接口、枚举、注解、数组
注意:String是引用的数据类型

类型 长度(位) 长度(字节) 表示范围
byte 8位 1字节 -128~127(-2^7~ 2^7-1)
short 16位 2字节 -32768~32767(-2^15~ 2^15-1)
int 32位 4字节 -2147483648~2147483648(-2^31~ 2^31-1)
long 64位 8字节 -2^63~ 2^63-1
float 32位 4字节 -3.403E38~3.403E38
double 64位 8字节 -1.798E308~1.798E308
char 16位 2字节 0~2^16-1表示一个字符,如(‘a’,‘A’,‘0’,‘中’)
boolean 8位 1字节 只有两个值true与false

18.数据类型的默认值

类型 默认值
byte 0
short 0
int 0
long 0
float 0.0
double 0.0
char ‘’ 空字符(\u0000)
boolean false

小数默认是double类型;
使用f/F后缀显式表示float类型;使用d/D后缀显式使用double类型;
1.5数据类型 默认表示是double类型
1.5f数据类型 表示是float
100 数据类型 默认表示是int类型

19.数据类型自动转换分类
自动类型转化=隐式转换:从表示范围小的类型转换成表示范围大的类型
强制类型转换=显示转换:从表示范围大的类型转换成表示范围小的类型
注意:数据类型转换前提,数据类型兼容
基本的数据类型的赋值用“=”可以为任何一种基本数据类型的变量赋值;
赋值时主要不要超过表示范围,否则将出现编译错误
char类型使用’’引用单个字符赋值;也可以使用非负整数进行赋值

20.比较运算
可以使用==、!=、>、<、>=、<=对基本数据类型的数值进行比较运算,返回结果为boolean型
注意:比较的是数值的二进制;

21.数据存放
数据都是存放在内存中,了解Java内存的基本结构有助于深入理解数据类型;
Java内存大体可以分为堆、栈、常量池、方法区,目前只了解各区域基本特征

22.基本的数据类和引用的数据类型区别
在函数(方法)中定义的基本数据类型变量存储在栈中;
引用类型实例的引用(reference)也是存储在栈中;
引用类型实例的成员变量,存储在堆中;

基本数据类型 引用类型
存放位置 栈内存 地址(引用)存在栈内存,内容存在堆内存
赋值 用=直接赋值 用new创建对象赋值

注意:包装器类型和String类型比较特殊,除了用new创建对象赋值,也可以用=直接赋值

23.包装器类型 将基本的数据类型转换成引用的数据类型

基本的数据类型 byte int long short float double char boolean
包装器类型 Byte Integer Long Short Float Double Character Boolean

24.思考
1)一个.java文件中能不能包含多个类?
一个.java文件中不能包含多个被public修饰的类。
一个.java文件中能包含多个没有被public修饰的类。并且在编译时,会把每一个类的class文件单独生成。
2)一个.java文件中如果能包含多个类,文件名和谁保持一致?
一个.java文件中如果能包含多个类,前提是最多只能有一个类是用public进行修饰的,文件名称必须和其中用public修饰的哪个类的名称保持一致。
3)如果要比较两个字符串的字典顺序,如何实现?能否用>、<?
不可以用>、< String类中有compareTo()按字典顺序比较两个字符串。
4)当只声明了一个引用类型变量,却没有为其赋值,则此时该变量为null;
一个字符串是null,与一个字符串是””是否一样,有什么区别?
答案:不一样。
null不指向任何对象,相当于没有任何值;而“”代表一个长度为0的字符串
null不分配内存空间;而“”会分配内存空间

你可能感兴趣的:(Java)