Java基础知识点整理(二),java基础知识点整理
分享于 点击 11322 次 点评:205
Java基础知识点整理(二),java基础知识点整理
Java基础知识点整理(二)
思维导图
一、Java简介
Java开发环境
下载JDK安装包
http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
Java配置环境变量
JAVA_HOME:jdk安装目录位置
Path:jdk bin目录位置 eg:.;%JAVA_HOME%/bin [.表示先到当前目录中寻找]
Classpath:配运行时依赖jar文件位置
下载eclipse
https://www.eclipse.org/
名词解释
Jdk: java Development Kit 开发工具箱【静态概念】
Jre:java runtime environment 运行环境【静态概念】
Jvm:java virtual machine 虑拟机[动态概念] 由jre运行起来生成一个JAVA的运行环境
Java是一种具有多种功能的高级语言
JavaSE,它可以用于开发web页面上的小程序,桌面上运行的应用程序
JavaEE,用于客户端和服务器资源通讯的服务器端中间件
JavaME,还可以用于web服务器、嵌入式系统和智能设备中
Java特性
跨平台:Java核心优势,
那么Java如何实现跨平台的?
我们说,Java文件首先会被编译,编译成和平台无关的 .class 字节码文件,
而Java开发人员为不同平台开发了不同的虚拟机,
虚拟机来执行字节码,从而达到跨平台。
面向对象:Java是完全面向对象的语言,也是一种强类型语言。
分布式、多线程、安全性、健壮性、高性能等等。
二、Java关键字、数据类型、变量
关键词:
java中已经用作他途的 不能再继续使用
goto等虽然java中没有使用使用 但是后期有可能用 称之为保留字
null false true(null false true)
Java 采用的字符集:
Unicode
(它是一个规范,真正的 字符集合是符合其规范的比如:UTF-8,UTF-16 等)
乱码问题:
乱码问题一般是 程序中 字符的编码 与 当前操作系统的 编码字符集不同,
如:
程序中可能常用 UTF-8 保存,而当前操作系统(比如 win10)的编码是 GBK,因此 打印输出时 会乱码,将程序中的编码 改为 GBK 大概可解决
标识符:
[只要是自已取名的地方都叫标识符]
用于标识程序中的变量、符号常量、方法等操作对象的名称
凡是可以你自己命名的地方,都是自定义标识符
命名特殊习惯:
1 自定义标识符不能与关键字重名
2 变量名要全小写(如果由多个单词组成,后面单词的首字母要大写)
3 常量名要全大写 如PI=3.14
4 严格区分大小写
5 字母/_/$开头 +字母/_/$/数字
6 见名知意
例:
类名:UserAccount
方法名:getUser
变量名:userName
常量名:PI
(驼峰命名法)
数据类型:
基本数据类型 四类
整型
byte 1 short 2 int 4 long 8
所有的变量赋值为数字字面值时 默认是 int类型
浮点型
float 4 double 8
字符型
char 2
布尔型(逻辑型)
boolean ==1位==(jvm sun定的规范)
引用类型:
数组(array)
类 (class)
接口(interface)
特殊值:null
Java是一种==强类型==编程语言,[javascript]
这意味着在Java程序中用到的所有变量都必须有明确定义的数据类型
声明和创建变量:
int m,n;m=10;n=10;
===============
int m=10,n=10;
================
int m=10;推荐使用
变量
字面值
基本数据类型转换:
低级类型向高级类型自动转换
容量小的类型向容量大的数据类型自动转换
大类型 变量 = 小值;
大转小 强制
小类型 变量 = (小类型)大值; (强转有风险 转换需谨慎)
byte:
byte a=10;
byte b=10;
byte c=(byte)(a+b)
byte by = 128; //编译时报错 溢出
byte by2 = 127+1; // 将输出 -1
byte 一位 jvm 按一个字节(8位)存储,则有
取数范围:2^(8-1)-1 = 127,负数:-2^7 = -128;
java常量:
用final修饰,名称全大写,遵循 驼峰命名法
例:
public static final int PI = 3.14;
程序运行期间不可改变【只能赋值一次】
final int A=10;
================
final int A;A=10;
运算符:
1.算术运算符:
+,-,*,/,%,
PS:byte+byte==int 两个字节类型相加结果为int
++,--
++a先加再运算
a++先运算再加
2.位运算符:
&与运算 :两个相与全为1结果为1
|或运算 :两位相或只有一个为1则为1
^异或:两位相反为1
~非:反过来
【PS:正数返回负数 负数在计算机用补码表示】
正数的原码 反码 补码 一致
负数:符号位除外其余位取反【反码】加1变【补码】
3.移位运算符:
>>右移 [PS:最快的除2方法]
<<左移 [PS:最快的除2方法]
>>>右移补零
4.关系运算符:
>,<,>=,<= 基本数据类型
==,!= 既可以是基本/引用
instanceof (判断 一个变量是否 是某个类的对象)
5.逻辑运算符:
!非
&&与
||或
短路 条件1[false] && 条件2 [防止后面的条件永远不执行]
6.赋值运算符:
=
7.扩展赋值运算符:
+=,-=,*=,/=
8.字符串连接运算符:
+
9.条件运算符号:
(表达式1)?(表达式2):(表达式3)
三、Java流程控制
顺序:
就是一步一步按照代码编写顺序依次执行
分支:
1.if:
单分支
if(boolean值){
}
双分支
if(boolean值){
true
}else{
false
}
多分支
if(){
}else if(){
}else if(){
}else if(){
}else if(){
}............{
}else{
}
2.switch:
值:不能是long 浮点以及 boolean
==1.5之后支持 enum==
==1.7之后支持了String==
switch(值){
case 值1:
执行语句1;
break;
case 值2:
执行语句1;
break;
case 值3:
执行语句1;
break;
。。。。。。
default:
执行语句N;
}
循环:
1.while:
while(循环条件){
改变循环条件的表达式;
}
2.do-while:
do{
改变循环条件的表达式(一定会执行一次);
}while(循环条件);
3.for:
for(初始化;判断(可移至循环体);递增(可没有递增规则)){
循环体
}
foreach
四、Java方法
概念:
思想:分而治之的思想[大->小]
定义方法:
1.定义格式:
修饰符1 修饰符2 返回类型 方法名(参数列表){//形参
方法体
}
2.返回类型:
无返回类型void
可以返回 [return; 没有值]
有返回类型【基本数据类型|对象类型】
必须要返回return 值【可以与类型相同 也可以小于返回类型】
3.调用:
接收结果=方法名(实参)
【
如果没有返回值则不能接收
如果有返回值也可以不接收
】
4.方法的签名:
标识方法的唯一性
[返回类型 方法名 参数列]
5.方法的重载:
1:方法名相同
2:参数[类型不同,个数不同]
6.类变量与局部变量:
类变量在方法之外属于类所有方法共享 类变量类加载时会初始化
局部变量【方法,大括号中】随着环境存在而存在
方法调用时会初始化,调用完毕将销毁 局部变量如果参与运算则必须要初始化
关于递归
1.定义:
方法调用其自身,则称此操作为递归 [隐式的循环]
2.递归的三个要素:
一个结束递归的代码
一个继续递归的调用
一个停止或继续递归的测试
3.可采用递归算法解决的问题有这样的特点:
原始的问题转化为解决方法相同的新问题
而新问题的规模要比原始的问题小
新问题又转化为规模更小的问题
直到最终归结到最基本的情况---递归的终结条件
4.所有递归问题都可以用迭代取代,
虽然递归程序”优美”,但由于每次调用都会分配内存,
所以内存和cpu的开销比迭代要大,如果考虑性能的话,
迭代优于递归;如果更关心程序的可理解性和可维护性,
递归优于迭代。
相关文章
- 暂无相关文章
用户点评