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的开销比迭代要大,如果考虑性能的话,

迭代优于递归;如果更关心程序的可理解性和可维护性,

递归优于迭代。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值