java基础知识
Java特性
- 简易性:Java设计人员删除了C++中许多复杂的功能,如指针操纵和运算符重载等
- 面向对象:在Java中任何东西都是对象。因此,重点集中在数据、应用程序中操作对象的方法以及过程上
- 健壮性:Java在编译(从文本代码变成Java字节码的过程)和解释(运行时)时都会检查代码(异常处理机制)
- 安全性:Java供了用于执行程序的受控环境,以及多层次的安全控制
- 分布式:Java可用于开发能够在多个平台、操作系统和图形用户界面之间移植的应用程序
- 多线程:Java程序使用称为“多线程”的进程同时处理多项任务
- 可移植:JVM虚拟机
HelloWorld
1)编写:
每一个java文件都是.java结尾的,称为源文件【HelloWorld.java】。java程序就存在于源文件中,经过编译成 .class 字节码文件。
public class HelloWorld{
//程序的主方法,是程序的入口
public static void main(String args[]){
//要执行的代码
System.out.println("HelloWorld");
}
}
可以用 cmd 进入文件路径下进行编译与执行
javac HelloWorld.java
java HelloWorld
若写的 java 类带有包名
package com.jcy;
编译的时候就需要打包编译
//编译时候命令:
javac -d . HelloWorld.java
//执行时候命令:
java com.jcy.HelloWorld
根据文档注释生成 API 文档
//javadoc -d 文件目录名 -author -version 源文件名.java
javadoc -d . -author -version HelloWorld.java
2)注释:
①单行注释 //
②多行注释 /* / (多行注释不能够嵌套)
③文档注释 /* */
基本语法
1. 关键字
关键字是SUN公司事先定义的,有特别意义的字符序列 java保留字 系统已经占用了这些单词,我们不能再去对它们有别的定义。
特点:在 Java 中关键字都是小写的
2. 标识符
标识符可以标识类名,接口名,变量名,方法名
3. 数据类型
Java 总共有两种数据类型, 主要有基本类型和引用类型, 基本类型有 8 种, 引用数据类型有3 种
1)基本类型
整型
byte 1字节 short 2字节 int 4字节 long 8字节
浮点型
float 4个字节 double 8字节
字符型
char 2个字节
布尔类型
boolean true 和 false 不可以取 null
2)引用类型
数组
接口
类
4.字符编码
ASCII 字符编码采用一个字节编码,主要针对英文编码 ISO-8859-1又称latin-1,是国际标准化组织ISO制定的,主要为了西欧语言中的字符编码,和ASCII兼容 GB2312/GBK/GB18030国标(guo biao)主要是汉字编码,三种编码从容量上看是包含关系 unicode Unicode统一了全世界上的所有文字编码,unicode有几种实现:UTF-8,UTF-16,UTF-32
5.变量
变量是内存中用来存放特定数据类型数据的一块内存空间,它的值是可以改变的。Java中的变量有四个基本属性:变量名,数据类型,存储单元和变量值
变量名:合法的标识符
变量的数据类型:可以是基本类型和引用类型(必须包含类型)
存储单元:存储单元大小是由数据类型决定的,如:int 为4个字节32位
变量值:在存储单元中存放的值
变量的声明格式: 类型 变量名;
6.运算符
算数运算符(7):+ - * / % ++ --
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>
三元运算符 (条件表达式)? 表达式1 : 表达式2;
注意:
1)两种逻辑与(&&和&)的运算规则基本相同,两种逻辑或(||和|)的运算规则也基本相同。 &和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能。
所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。 对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。 所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程; 对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。 所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。
2) ” ++ “和”--“用于数值变量之前,在赋值操作中,先对被”++“或”--“操作变量值加1或者先减1,然后在进行其他的操作;
" ++ "和”--“用于数值变量之后,在赋值操作中,先用被”++“或”--“的操作变量值进行其他的操作,然后在对其值加1或者减1。
3)二进制 对于原码, 反码, 补码而言, 需要注意以下几点:
(1).Java中没有无符号数, 换言之, Java中的数都是有符号的;
(2).二进制的最高位是符号位, 0表示正数, 1表示负数;
(3).正数的原码, 反码, 补码都一样;
(4).负数的反码=它的原码符号位不变, 其他位取反;
(5).负数的补码=它的反码+1;
(6).0的反码, 补码都是0;
(7).在计算机运算的时候, 都是以补码的方式来运算的.
7.基础类型转换
自动类型提升 强制类型转换 隐式类型转换
char类型本身是无符号
所以byte不能自动提升到char类型
char也不会自动提升到short
byte可以直接提升到short
Java编译器拿到的数值,默认类型是int,如果赋值给范围小于int的类型,编译器会自行判断,如果当前的数值超过了赋值目标的范围,这时就会报错,否则会自行转换成目标类型。
8.流程控制
1.顺序结构
程序从上往下的顺序执行
2.分支结构:
if(判断句) { 语句a;} else {语句b;}
if(判断句) {语句a;} else if(判断句) {语句b;} else {语句c;}
//switch只能进行多数值的判断,而且switch支持的判断数据类型(一直在发展)> //最初:int JDK1.5:加入枚举类型 JDK1.7:加入String类型 switch (表达式){ case 值1 : 语句1;break; case 值2 : 语句2;break; ... default : 语句n ;break; }
3.循环结构:
1.while循环 while(boolean表达式){ 循环体语句; } 先判断后执行 2.do...while循环 do{ 循环体语句; }while(boolean表达式); 先执行一遍再判断,至少会执行一遍 3.for循环 for(表达式1;表达式2;表达式3){ 循环体语句; }; 表达式1:初始表达式,表达式2;boolean表达式,表达式3:增量表达式
备注:
跳转结构:
1.return;会跳出整个方法
2.continue;跳过后面的语句直接进行下一次循环
3.break;跳出当前整个循环,执行循环后面的语句
9.java 修饰符
1- 访问控制修饰符
public (公有的)对所有的类都可见,使用位置:变量 方法 类 接口
protected(受保护的)对同一包内的类和所有子类可见 使用位置:变量 方法 内部类
default(默认的)在同一包内可见,不用写修饰符,使用位置:变量 方法 类 接口
private(私有的)只在同一类可见,使用位置:变量 方法 内部类
修饰符 | 当前类 | 同包内 | 子孙类 | 其它包 |
---|---|---|---|---|
public | 是 | 是 | 是 | 是 |
protected | 是 | 是 | 是 | 否 |
default | 是 | 是 | 否 | 否 |
private | 是 | 否 | 否 | 否 |
---|---
2- 非访问控制修饰符
static 静态的 使用位置:变量 方法 声明静态变量 静态变量也叫类变量 局部变量不能声明为static变量 类中所有的对象都可以使用,并且只有一份 静态方法 静态方法不能使用非静态变量
final 常态的
final变量 也就是常量 只能初始化一次,之后值不能被改变
final常和static搭配来声明类的常量
final方法 主要目的是防止方法的内容被修改(子类继承)
final类 不能被继承的类 abstract 抽象的