java初级笔记

Java
语言=os+数据结构+算法+思想
os操作系统
数据结构:保存数据
队 栈 树 链表…
算法:游戏常用
int a>0,b>0 用一句话输出最大值(|a+b|+|a-b|)/2
思想 语言的灵魂
java 面向对象的编程语言
c面向过程的语言
C++半面向对象的语言 半面向过程的编程语言

面向过程
西红柿炒鸡蛋
1.买西红柿
2.买鸡蛋
3.洗西红柿
4.炒鸡蛋
5.炒西红柿
6.装盘
面向对象
1.有西红柿和鸡蛋
2.炒(西红柿,鸡蛋){

}
3.装盘
class 西红柿{
}

jdK包含的内容
①JVM虚拟机:解释执行java程序
②包含java的类库java.lang*  java.io* java.net*
③java的可执行工具  javac  java
java分为三种类型  java se 做桌面程序  javame 做移动应用  Android iOS 前端
javaee 做企业级应用  例如淘宝

提供解释环境

①加快开发 
②一次编译,到处运行 java-->编译 class-->运行 class
③多线程,语言层面的多线程斯
④支持动态更新

提供了一种比较简单的语言

①健壮性 更完善②取消了指针:取消了程序级别的指针  底层依然存在指针,
程序员不需要关心
③没有内存管理 程序员需要手动new创建对象,占用内存 不需要关心内存的释放  
④GC:垃圾回收器  c:     malloc()开辟空间,free()释放空间
			    c++:new开辟空间,delete()释放空
⑤纯面向对象编程语言(夸张)保留了基本数据类型

jvm

解释执行实现跨平台的特性,不同系统都有对应的jdk
 bytecode 字节码文件,class文件,与机器无关

gc:垃圾回收器

垃圾:无用的对象内存,没有任何指向的内存,级别非常低的系统级别的线程,
实现垃圾回收,所以程序员无法克制什么时候回收垃圾,当优先级高的线程让出CPU,低线程才会执行,一般情况是低线程让出CPU,让高线程执行
gc什么时候执行:①内存不够②系统闲置的时java.lang.System.gc()/java.lang.
Runtime.gc()通知垃圾回收器回收垃圾但不一定真正执行

gc回收垃圾算法
①标记清扫法  不会整理内存,会产生碎片,效率高
②内存搬移法from--to可以整理内存不会产生碎片,效率低,数据搬移太耗费时间
  二者结合使用,通过判断对进行选择

java平台代码的安全策略

1class loader
加载:查找和加载类的二进制文件(class文件);将其置于内存中
2 byte code venifier
字节码验证者 1验证:确保类加载的正确性(有正确的内部结构,并且与其他类是否协调一致)
why?java虚拟机不知道某个特定的.class文件,到底是由正常的java编译器编译成的,还是黑客特制的
类的验证可以是提高程序的健壮性,确保程序安全执行
②准备:为类的静态变量分配内存,并将其初始化默认值
③解析:把类中的引用符号转化为直接引用
3 jit code generator
即时编译器,把一个java字节码文件转换成直接发送给处理器的指令程序
4interpreter
解释器:当程序验证有问题,就会将有问题的代码重新解释运行
验证规范内容
①代码要和JVM规范一致,语法和版本是否兼容②代码不能破坏系统的完整性③没有堆栈的上溢和下溢④判断参数类型是否正确⑤类型转换是否正确

第一个java代码

**1 package 定义包名,,不定义也可以,**

①使用层级样式管理类,最终生成目录
②避免命名冲突,同一个包不能出现相同的文件,不同包可以
③改变类的名字student.java包名+类名-权限类名
④包的命名规范  公司的域名的倒写,组,功能         公司的域名的倒写,功能

**2 import 需要用到其他包的内容,就是权限类名  其他包**

①jdk提供的类所对应的包的内容
②自定义的包的内容,除了lang包	
③ public class 公有类,类名要和文件名保持一致 class定义类 public 修饰类 公共的公有的   一个java文件中能有多个类,但是只有一个公共类
④public static void main [String] args

main 方法是程序的主入口,必须满足这个格式
system.out.println("");方法的定义格式 修饰符 返回值类型 方法的名字(参数列表){}

//方法体
修饰符public static public 所有人能够调用的方法,公共方法
static修饰的方法为静态方法 不用static修饰的就是非静态方法 返回值类型:方法调用完之后返回的类型的数据的类型 void 代表没有返回值

方法名 main add delete
参数列表,主要接收用户输入的信息,可有可无
方法体 一定是放在{}内
静态方法不能直接调用非静态方法 可以通过创建类对象调用普通方法、
静态方法可以直接调用静态方法
多个修饰符之间可以改变顺序,但是不能改变整个结构
所有方法一定是类或者对象调用

编译
javac -d 类名.java
-d指定生成的class文件的存放路径,指定存放类文件的位置 连同包一起编译
.代表存放在那个目录下,代表当前目录
javac -d bin 类名.java
j将连同包一起编译的类文件放在bin目录下运行
java 权限类名
将class文件加载到内容中 然后为各类数据生成对应内存和地址

why?
注释 增加代码

1当行注释  
 //注释内容 
	变量
2多行注释
/*
*/
类方法算法
3文档注释
/**
*/
类,方法 算法 
生成帮助文档javadoc -author  -version -d doc*.java

标识符

类 方法 变量
命名规则 判断是否合法
1以字母- $  开头,不能以数字开头
2区分大小写
3没有长度限制
4不能使用关键字

基本数据类型

java数据类型分为两类
基本数据类型:布尔类型:boolean  字符类型char 整数类型byte short int long 
浮点类型 float double

引用数据类型:类类型:class String 自定义的类           接口类型interface     
  数组类型[]

why?数据类型

程序的实质 处理数据 处理变量
声明变量:数据类型 变量名
例如int a
变量赋值:变量名=值
声明时赋值  int a=10;
a=25;=赋值,将右边的值赋予给左边的变量 int a=10  long a=10
 1满足语法规则
 2决定保存该数据开最大的内存空间
数值默认是int类型 类名首字母大写,变量首字母小写
int i1=200;

数值类型转换

1强制数据类型转换。精度高的转换为精度低
byte a=(byte)200;
注意,对于基本数据类型不建议转换
1隐士类型转换。精度低的转为精度高的
long a=200; byte<shor<float<doube
浮点类型默认是double类型
double a=2;   double b=1.1  
BigDecimal b1 =new BigDecimal("2");
BigDecimal b2 =new BigDecimal("1.1")
b1 .subtract(b2);//相减

推荐类名规则

1类名以首字母大写开头
2接口名以首字母大写开头
3方法名以首字母小写开头byGetName
4变量以首字母小写开头 userName
5常量名全部大写,多个单词并以-连接USER-NAME
总体规则遵循驼峰·命名法 
a=20;
int a;
变量设置
先声明后初始化
声明的同时初始化  int b=20;  int a=b;
面向对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值