java基础笔记1

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载

最新通知

按照我去培训机构的学习经历,给初学还有自学Java 的同学一个基本的学习脉络,希望对大家有帮助。 不建议找到一本书死啃,没啥用,不要有这一页看不明白我就不往下看的想法。计算机的学习和原来的代数、几何不大一样。不是用几个公理推出所有结果的。!

首先我们学习Java需要有目标!应该知道先学哪些再学哪些 !不是盲目的去乱学去!

★【新】回复“测试题”获取昨天发布的软件工程师初级阶段测试题答案

★【新】回复“学习资料”获取java学习电子文档

★【新】回复“聊天系统”获取java多人聊天系统项目源码!

温馨提示:北京的朋友想报班学习的话可以联系小编给你介绍(可以免费试听一个月)-----想让你先试听看自己适不适合报班不要浪费钱!

★请转发给身边需要的朋友!您的每一次转发都是对我的一份支持!!帮忙你我他!(关注本公众号获取更多学习资源!)

常用的操作系统:windows 7 10 xp vista 8 可视化界面 一般用户常用

Linux 开发员比较喜欢使用

操作系统位数:

x86 win32 软件只能在32位系统使用,可以在64位系统兼容使用

x64 只能在64位系统使用,不能在32位系统使用

Java平台无关性:

一个java(代码开源)程序可以在任意的操作系统使用,

通过不同的JVM将程序转换为对应的平台能使用的代码

一个C语言(不开源)编写的程序只能在windows系统使用

字节码:二进制语言

十进制语言:由0-9的数字组成 12; 第二位表示1*10 100 第三位表示1*10*10

二进制语言:由0-1的数字组成 第n位数字a表示的值为:a*2^(n-1) 100 第三位表示1*2*2 1*2^2

电路板:有很多回路,每个回路只有两种状态:通电、断电

将电脑电路板的通过/断电与0/1对应起来

存储信息时根据电路板的回路的状态转换对应的二进制数字(机器码表示)

将二进制数字(机器码)转换为人类常用的数据:ASCII码将每8位机器码转换为一些特殊符号、数字、英文

每8位机器码 称为一个字节(字节码)

字节码:在读写的时候按照字节进行读写,每8个机器码读取一次

中文比较特殊:两个字节表示一个汉字

十六进制:100 第三位表示1*16*16=1*(1*2*2*2*2)*(1*2*2*2*2)

2个16进制表示一个字节 8个二进制表示一个字节

---编译.java代码的命令:javac

一次性编译 多次使用 java语言是编译执行的语言

C语言程序没有编译执行,每次运行速度基本一致;

---运行.class程序的命令:java

java程序第一次运行时比较慢(因为需要编译),第二次以后非常快(不需要编译)

Java运行时(JVM处理):

1.类加载器(ClassLoader):加载类 初始化一个类

2.字节码校验器验证:java异常 例如:类转换异常、空指针异常、数字格式化异常等等

3.校验失败则抛出异常提示程序员,程序中断

校验成功则由解释器逐行解析执行代码语句,转换为对应的操作系统可以识别的内容

4.将解析后的内容传递给操作系统平台去执行

JVM Java Virtual Machine Java虚拟机 Java CPU Java 中心控制器

1.Java跨平台原理:

Java程序的运行机制:首先使用javac.exe将源程序(后缀.java)编译成与平台无关的字节码文件

(后缀.class),然后由Java虚拟机(JVM)读取并处理.class文件,Java解释器(JVM组件)

负责将处理后的文件在相应的平台上运行。

Java中所有程序都是在JVM中执行的,所以开发源代码时无需考虑平台;

只要根据不同的平台安装对应的JVM,就可以在不同的平台执行所有的JAVA程序了。

注:javac.exe编译器,保持在JDK的bin目录下

2.在Windows中搭建JAVA开发环境JDK:

Java Development Kit

Java版本:

JavaME 已淘汰 微型Java

JavaSE 标准版Java

JavaEE 企业版(工作时使用)

JDK最新版1.8 测试版 稳定版1.6 1.7

2.1 目录说明:

2.1.1 bin:存放各种JAVA命令,需要在Windows中注册后才可以使用;

常见的java命令:

javac:将源代码编译为class文件

java:执行class文件

javadoc:生成帮助文档及API

jar:将代码归档,生成一个jar包

备注:后缀为.exe的文件是一个应用程序的执行文件(客户端),

相当于java代码里面的主方法(main方法),

执行每一个java命令,相对于执行对应的源代码的主方法

2.1.2 lib:存放Java类库文件;一些jar包 工具类

2.1.3 jre: 客户端目录,供客户使用

2.1.4 demo:存放演示文件,可能没有这个目录

注:javabean 已淘汰 java小应用程序,java代码片段

2.2 环境变量说明:

JAVA_HOME:JDK根目录,设置后,软件使用JDK时默认在根目录下面搜索

PATH:bin目录的绝对路径,用于找到JAVA可执行命令;

CLASSPATH:类执行路径,指向lib目录,才能找到并执行类库中的类;

注:classpath默认指向当前目录,但可以通过命令set classpath修改;修改后可以跨盘执行类;

修改classpath只是修改类路径,对源代码路径没有影响;

跨盘编译源代码需要在源文件前面加上绝对路径,

例如:在C盘编译E盘的代码:javac E:/hello.java

在C盘执行E盘的类: set classpath=E:

java hello

3. 数据类型

3.1 八大基础数据类型及对应的封装类:

封装类 数据类型

Byte类: byte(8bit)

Short类: short(16bit)

Integer类: int(32bit)

Long类: long(64bit)

Float类: float(32bit)

Double类: double(64bit)

Character类:char(16bit)

Boolean类: boolean(1bit)

3.2 引用数据类型:数组、类(如:String)、接口

注:引用数据类型的初始值为null;

3.3声明变量

3.3.1 声明格式:

1.声明变量同时赋值:数据类型 自定义变量名=变量值;

2.声明变量暂不赋值:数据类型 自定义变量名; 变量名=变量值;

3.数据类型 自定义变量名=new 类型对应的封装类(参数);----引用数据类型常用的声明方法

注:声明变量会开辟一个内存空间,但初始空间为null,不能直接访问(未实例化),否则会出现空指针异常;

变量的赋值就是实例化的过程;

1及2为基础类型常用声明赋值的方法,但不适用于类变量;类变量一般采用第三种方法;

基础类型变量的第3种方法实例:int a=new Integer(10);等价于int a=10;

3.3.2 命名规则:

1.首字符:字母、下划线_、$;

2.其余字符:字母、下划线_、$、数字;

3.所有关键字不能作为变量名,即使符合以上两条规则;

3.3.3 作用域:

1.块的定义:每个块由大括号{}括起来,可以嵌套;每个块就是一段代码段。

2.全局变量:在类里面,方法外面声明的变量;作用域为整一个类

3.局部变量:在代码块或者方法里面声明的变量;作用域为声明它的大括号里面

4.静态的全局变量与局部变量重名时,优先选择局部变量

5.非静态的全局变量在静态方法中不能直接使用,只能通过对象引用

6.代码执行顺序:

局部按照从上到下的顺序逐个语句依次执行;

优先执行static语句、static代码块的语句;然后执行主方法的语句;

类实例化一个对象时,优先执行构造代码块的语句,再执行构造方法的语句;

4.数据类型转换

4.1 自动转换:转换前后类型兼容且转换后的类型表示的数据范围比转换前的类型大;例如:short a,byte b,int c=a+b;

4.2 强制转换:格式:(要转换的数据类型)变量名称;例如:int a=(int)1.25

4.3 所有基础数据类型都可以自动转换为String类型;例如:int a=5;String b=a+"a";则b="5a"

注意:由大范围强制转换为小范围时,数据会溢出,其溢出原理参考数据的机器码读取规则(C语言);

整数型原码:首位为符号,0正1负;

浮点数原码:位移阶数符合(0左1右)+位移阶数+数字符号(0正1负)+小数点后面的数字

将浮点数表示为s*2^j的形式,例如110.1101=0.1101101*2^11(小数点左移3个位置,j=11)

数据溢出:例如250(int)强制转换为250(byte)

250原码(int):0...11111010(中间还有22个0)

转byte:11111010,首位1表示负数,补110将首位变为0,所以数值为110,转为十进制表示就是-6;数据溢出了

计算机存储浮点数:

32位:0-22位为有效数字 23~30位为位移阶数 31位为符号位

64位:0-51 52-62 63

明天更新java基础笔记2

原文发布于微信公众号 - java学习(javaxxf)

原文发表时间:2017-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏滕先生的博客

runtime官方文档翻译版本通过OC源代码通过NSObject中定义的方法直接调用运行时的函数消息传递机制使用隐藏参数获取方法地址动态方法解析动态加载消息转发转发和多继承代理对象转发和继承类型编码声

29170
来自专栏技术栈大杂烩

Python: 受限制的 "函数调用"

函数功能简单明了, 对于结果, 大家应该也不会有太大的异议:func分别是取得全局命名空间中a的值和使用内置命名空间中的函数id获取了a的地址. 熟悉Pytho...

15830
来自专栏用户画像

浅析JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

9020
来自专栏Petrichor的专栏

python: 下划线 使用

此时“_”、“__”、“___”、“____”等等作为临时性的名称使用。这样,当其他人阅读你的代码时将会知道,你分配了一个特定的名称,但是并不会在后面再次用到该...

24030
来自专栏python3

习题34:模块,类,对象

创建一个名字叫mystuff.py文件,并且在里面放了个叫做apple的函数,代码如下

10440
来自专栏Java Web

Java 7的新特性

前言 看大佬推荐的书单买了一本《Java 8实战》,总觉得在了解Java 8之前,是不是也应该去了解了解一下Java 7的一些特性?所以就自己百度了一些资料来...

34750
来自专栏Python中文社区

Python3.6新特性官方文档中文版

原文:What’s New In Python 3.6 翻译团队:Py字幕组 首发刊物:PyCN技术评论(点击菜单栏:社区-刊物进入) Github:htt...

61690
来自专栏Android 研究

Retrofit解析5之代理设计模式

即Proxy Pattern,23种常用的面向对象软件设计模式之一。(设计模式的说法源自<设计模式>一书,原名<Design Patterns:Elements...

14630
来自专栏java学习

Java每日一练(2017/6/29)

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 最新通知 ●回复"每日一练"获取以前的题目! ●【新】Ajax知识点视频更新了!(...

373120
来自专栏技术记录

通讯协议序列化解读(一) Protobuf详解教程

55670

扫码关注云+社区

领取腾讯云代金券