java基础概念梳理(一)

【读Java:A Beginner’s Guide后对基础概念的整理,已熟练掌握的不展开,仅提一下,都写在纸质笔记本上。基础不牢,地动山摇!】
Java SE:Java Platform Standard Edition
Java EE:Java Platform Enterprise Edition(J2E/Jakarta EE)

ch1 java基础

java&c++:
共同点:面向对象编程
不同点:实际应用、基本原理区别

java特性

  • 安全性:限制在java执行环境中(沙箱)

  • 可移植性:跨平台
    Java编译器结果是字节码,由JVM执行->因此平台有JVM即可。
    JIT/提前编译器

  • 简单、OOP、Robust、多线程、体系结构中立、解释型、高性能、分布式、动态

OOP:围绕数据、数据控制访问代码

  • 封装
    基本封装单元:类(class),对象是类的实例,类是如何构建的规定
  • 多态性
    泛型 单接口多方法
  • 继承
    超类、子类

创建:javac x.java
运行:java x

public:访问修饰符
括号内变量:形参

float:用4个字节来存储
double:8个
整型比浮点快,可减少开销

关键词保留了goto 但不能使用
标识符:区分大小写、以字母、下划线、$开头,但是不能以数字开头
变量:命名的内存地址



ch2 数据类型与运算符

强类型语言检查确保兼容性、可移植性
byte:占8个二进制位的整数
short 16(3万) long 64 int 32(21亿)
不支持无符号数
char也保留整数的二进制值有时也能归入整数类型(0-65536)
和其他语言不同的是采用Unicode

字面值literal:人类可读的语言形式出现的固定值
也就是常量。其中可以加下划线方便阅读。

八进制:0开始 十六:0x 二进制:0B

\r 回车
\f 换页
\t 水平制表
\b 退格
\ddd 八进制常量
\uxxxx 十六进制

字符串也是字面值

运算符
算数:加减乘除求余自增自减
关系:大于小于等
逻辑:与或非异或 计算每一个操作数
短路与短路非(或者称条件与)
赋值运算符:+=之类

自动类型转换

  • 兼容
  • 目标类型(左边)比原类型大

强制转换
类型升级原则:混用不同类型数据都会被转换成同一类型

1. char\byte\short都变成int
2.有一个long 转换成long 有一个float\double转换成float\double



ch3程序控制语句

控制台输入 行缓冲
缓冲:读取字符之前用于保存字符的一小块内存
按下enter生成一个回车和换行

break可用作文明的goto:

  1. label:
  2. break label;会转移到代码块结尾

continue:直接进入下一次迭代



ch4类、对象和方法

类的成员:方法和实例变量
实参:向方法传递的值
类封装了功能
关键词this对对象的引用,自动传递给方法,用于找到实例变量
垃圾回收:收集没用的对象以便重用内存的机制



ch5 其他数据类型与运算符

e.g. int sample[]=new int[10];

  1. 声明引用变量
  2. new分配内存

不规则数组
int sample[][]=new int[][];
int[][] sample=new int[][];
如果要返回数组,可用int[]

foreach循环(增强型for循环)
自动遍历整个数组
for(int x:nums) sum+=x;
x自动等于下一个元素的值
只读不修改元素的值

字符串不是字符数组,是对象

  • String str=new String(“lclclc”);
    可以从String对象创造另一个对象
    String str1=new String(str);
  • String str=“fighting”;
方法 描述
boolean equals
charAt 在某位置的字符
compareTo
indexOf(str)) 查找匹配的子串返回第一个匹配的索引
lastIndexOf

String:不可变字符串
StringBuffer/SreingBuilder:字符串对象可变

截取一段子串:
str.substring(3,10);//从第三个字符到第10个字符

命令行实参
args[]
java aDemo one
args[0]=“one”;

位运算符
按位与或非异或左右移
检测二进制每一位是否为1

int t; 
byte a;
for(t=128;t>0;t/=2)
	if((val&t)!=0)...

右移保持符号位不变
无符号右移>>>无符号右移
*2左移 \2右移

善用三元运算符?



ch6 方法和类详解

  • 类将代码和数据连接
  • 提供访问成员的途径
    注意限制对成员的访问
    可以使数组越界软失效/温和失效

访问修饰符:public、private、protected

向方法传递对象
int sample(Block ob)

如何传递实参

  1. 传值调用(不影响实参)
    复制实参值
  2. 引用调用(影响实参)
    对象通过引用来传递
    ob.b=-ob.b;

方法重载
同一个类中多个方法可共享一个方法,形参声明不同即可。实现多态性
自动转换:形参和实参不能直接匹配
byte,short可自动转换成int
float可转换成double

签名:方法名+形参列表
重载构造函数:允许一个对象初始化另一个对象

递归:调用自身
有方法调用额外开销,过多可能会导致堆栈溢出

static:无需创建对象ob.y就可以引用
类名.静态变量名即可引用
static方法限制

  1. 只能直接调用类中static方法
  2. …数据
  3. 没有this引用

static代码块
在使用类之前执行

嵌套类
在封装类中声明类,内部类有权访问外层类的变量和方法

varargs创建可变长度的实参列表
static void sample(int…v)
sample(1,2,3);
必须放在形参列表最后
可以方法重载
但如果形参为空,可能会有歧义

猜你喜欢

转载自blog.csdn.net/qq_34287121/article/details/88557141