1java基础
1.java特性 详细解读
(1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb.
小巧:由于Java的设计是要在小的计算机上运行,作为一种编程语言来说其系统是相对较小的。它能有效地在4MB以上RAM的PC机上运行。Java翻译器只占用几百KB。这种翻译器对Java的平台无关性和可移植性是可靠的。由于Java很小,它对内存很小的计算机,如基于Java的PC机,以及电视机、烤箱、电话机及家用计算机等,是很理想的。
(2)分布式:Java带有很强大的TCP/IP协议族的例程库,Java应用程序能够通过URL来穿过网络来访问远程对象,由于servlet机制的出现,使Java编程非常的高效,现在许多的大的web server都支持servlet.
(3)OO:面向对象设计是把重点放在对象及对象的接口上的一个编程技术.其面向对象和C++有很多不同,在与多重继承的处理及Java的原类模型.
(4)健壮特性:Java采取了一个安全指针模型,能减小重写内存和数据崩溃的可能型。Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。异常处理机制:java把c++里面很多警告变成错误 ,这样设计的原则是为了让劣质代码不能写出来。异常的3个种类 ,检查异常,运行时异常,错误。对于可能出现异常的代码,有两种处理办法:第一、在方法中用try...catch语句捕获并处理异常,catach语句可以有多个,用来匹配多个异常。第二、对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。
(5)安全:Java用来设计网路和分布系统,这带来了新的安全问题,Java可以用来构建防病毒和防攻击的System.事实证明Java在防毒这一方面做的比较好.Java没有指针。
(6)中立体系结构:Java编译其生成体系结构中立的目标文件格式可以在很多处理器上执行,编译器产生的指令字节码(Javabytecode)实现此特性,此字节码可以在任何机器上解释执行.
跨平台性:跨平台的原理是:Java代码通过编译变成一个叫字节码的文件,它的格式是.class,可以被虚拟机JVM运行,可以看作现实中的翻译官,把字节码翻译给其他平台,实现代码在其他平台的运行,在不同的平台有不同的JVM。JVM可以理解成一个可运行Java字节码的虚拟计算机系统,它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。
编译和解释性:Java编译程序生成字节码文件,而不是通常的机器码(即二进制)。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地“搬运”程序到不同的平台和环境中。在一个解释性的环境中,程序开发的标准"链接"阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的"编译、链接和测试"形成鲜明对比的精巧的开发过程。
(7)可移植性:Java中对基本数据结构类型的大小和算法都有严格的规定所以可移植性很好.
(8)多线程:Java处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成.所以多线程是Java作为服务器端开发语言的流行原因之一
(9)Applet和servlet:能够在网页上执行的程序叫Applet,需要支持Java的浏览器很多,而applet支持动态的网页,这是很多其他语言所不能做到的。
(10)GC垃圾回收:[Java GC]Java垃圾回收_HaveFerrair的博客-CSDN博客 GC又叫垃圾回收器,不再使用的内存空间应当进行回收,在C/C++等语言中,由程序员负责回收无用内存,Java语言消除了程序员回收无用内存空间的责任。JVM提供了一个系统线程,用于跟踪存储空间的分配情况,检查并释放那些可以被释放的存储空间。垃圾回收器在Java程序运行过程中自动启用,程序员无法精确控制和干预。
(11)快速:Java比典型的脚本语言大为有效,但它比C慢20倍。这对大多数应用是可接受的。不久的将来,代码生成器就可供利用了,这将使Java程序几近于用C或C++编写的程序那么快。
高性能:Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了"及时"编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了,Java字节码格式设计时考虑到这些"及时"编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。
类库丰富:Java提供了很多丰富的内置类库,通过这些类库,可以简化开发者的程序设计工作,简化操作,同时缩短了项目开发时间
(12)可拓展性:继承、多态、动态绑定。
2.dos命令入门
dir 显示当前目录文件
md 创建目录
rd 删除目录
cd 切换目录 可以是绝对目录或者相对目录
cd .. 切换到上一级目录
cd \ 切换到根目录
cls 清屏
del 删除文件
exit 退出dos界面
ipconfig 显示ip相关配置
3.Java注释
单行注释 //
多行注释 /* */
doc注释 /** */
4.阿里巴巴开发手册命名练习
练习稍后再做。
1. 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name / __name / $Object / name_ / name$ / Object$
2. 【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式 也要避免采用。 正例: alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。 反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
3. 【强制】类名(以及接口名)使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO 正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
4. 【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。 正例: localValue / getHttpMessage() / inputUserId
5. 【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT
6. 【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。
7. 【强制】中括号是数组类型的一部分,数组定义如下:String[] args; 反例:使用 String args[]的方式来定义。
8. 【强制】POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 Boolean isDeleted;的属性,它的方法也是 isDeleted(),RPC框架在反向解析的时候,“以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。
9. 【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用 单数形式,但是类名如果有复数含义,类名可以使用复数形式。 正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考 spring 的框架结构)
10. 【强制】杜绝完全不规范的缩写,避免望文不知义。 反例: AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类 随意缩写严重降低了代码的可阅读性。
11. 【推荐】如果使用到了设计模式,建议在类名中体现出具体模式。 说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。 正例:public class OrderFactory; public class LoginProxy; public class ResourceObserver;
12. 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。 正例:接口方法签名:void f(); 接口基础常量表示:String COMPANY = "alibaba"; 反例:接口方法定义:public abstract void f(); 说明:JDK8 中接口允许有默认实现,那么这个 default 方法,是对所有实现类都有价值的默 认实现。
13. 接口和实现类的命名有两套规则: 1)【强制】对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别。 正例:CacheServiceImpl 实现 CacheService 接口。 2)【推荐】如果是形容能力的接口名称,取对应的形容词做接口名(通常是–able 的形式)。 正例:AbstractTranslator 实现 Translatable。
14. 【参考】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。 说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。 正例:枚举名字:DealStatusEnum,成员名称:SUCCESS / UNKOWN_REASON。
15. 【参考】各层命名规约: A) Service/DAO 层方法命名规约 1) 获取单个对象的方法用 get 做前缀。获取多个对象的方法用 list 做前缀。 3) 获取统计值的方法用 count 做前缀。 4) 插入的方法用 save(推荐)或 insert 做前缀。 5) 删除的方法用 remove(推荐)或 delete 做前缀。 6) 修改的方法用 update 做前缀。 B) 领域模型命名规约 1) 数据对象:xxxDO,xxx 即为数据表名。 2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。 3) 展示对象:xxxVO,xxx 一般为网页名称。 4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。
5.C语言和Java数据类型对比
数据类型 | C语言大小(32位系统) | Java大小(可移植性,跨平台大小不变) |
byte | 1字节 | |
char | 1字节 | 2字节 |
short | 2字节 | 2字节 |
int | 4字节 | 4字节 |
float | 4字节 | 4字节 |
long | 4字节,longlong8字节 | 8字节 |
double | 8字节 | 8字节 |
bool | boolean,1位 |
6.练习
b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。 Java中的byte,short,char进行计算时都会提升为int类型。
java中byte类型为一个字节,表示的范围是[-128,127],此时越界。
强制转换为byte类型时,由于java采用补码方式存储数据,将32位的int转化成8位的byte省略前24位(0),130的最后8位是10000010,补码转换成原码需要首位不变,其他位翻转最后加1,即11111101+1,即11111110=-126
7.变量/常量
对于变量(声明在方法内的变量) 在第一次使用之前 必须进行初始化(赋值)
变量的初始化:在声明时初始化 在声明之后使用之前进行初始化
变量的本质:是内存中一块存储单元
常量:常量可以在声明的同时赋值 或者在声明之后赋值 但是无论何时赋值 都只能赋值一次,也是内存中一块区域
常量除过我们所说的使用final修饰的变量 字面常量 2,5,a ,b “aaa”
8.Java保留字:goto和const
保留字是指在其他语言中的关键字,目前java还没有将其作为关键字使用,但以后可能使用,避免造成错误。
9.Java命名规则
标识符可以用数字、字母、汉字、下划线、美元符号表示。数字不能作为开头。不能包含Java的保留字和关键字。命名的原则是见名知意。
1java基础的更多相关文章
- Java后端高频知识点学习笔记1---Java基础
Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...
- 2.1JAVA基础复习——JAVA语言的基础组成注释和常量变量
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- 一、基础篇--1.1Java基础-面向对象的特征
面向对象的特征 封装.继承和多态 https://blog.csdn.net/jianyuerensheng/article/details/51602015 封装: 定义:封装就是将数据或函数等集合 ...
- 2.1Java基础
2.1.9面向对象的三大特性(携程): 封装:把一个对象的属性隐藏在对象内部,外部对象不能直接访问这个对象的内部信息.但是可以提供一些可以被外界访问的方法来操作属性.就比如我们常常创建一个类,把他的属 ...
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...
- Java 1-Java 基础语法
一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的 ...
- 一、基础篇--1.1Java基础-Java运算符优先级
在一个表达式中可能包含多个有不同运算符连接起来的.具有不同数据类型的数据对象:由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结 ...
- 一、基础篇--1.1Java基础-Object类中常见的方法,为什么wait notify会放在Object里边
这是个设计相关的问题,它考察的是面试者对现有系统和一些普遍存在但看起来不合理的事物的看法.回答这些问题的时候,你要说明为什么把这些方法放在Object类里是有意义的,还有不把它放在Thread类里的原 ...
- 一、基础篇--1.1Java基础-什么是java的序列化和反序列化
什么是序列化和反序列化 序列化:把堆内存中的java对象数据,通过某种方式把对象存储到磁盘文件或者传递给其他网络节点.这个过程称为序列化.简单来说呢,就是将对象转换成二进流的过程. 反序列化:把磁盘 ...
随机推荐
- python+selenium基础篇,键盘操作
1.任务要求:打开百度,在百度搜索里面输入python,通过键盘复制python到搜狗搜索,粘贴到搜狗搜索框中 实现代码如下: from selenium import webdriver from ...
- springboot2.x整合tkmapper
springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent> <artifactId>spring-boo ...
- P1091 [NOIP2004 提高组] 合唱队形
题目描述 $N$位同学站成一排,音乐老师要请其中的$\left ( N-K\right )$位同学出列,使得剩下的$K$位同学排成合唱队形. 合唱队形是指这样的一种队形:设$K$位同学从左到右依次编号 ...
- OOP第三次总结Blog
1. 前言 相比于前一次Blog题目集,此次七八九题目集偏重于类的继承.多态性使用方法以及接口的应用;在设计层面,强调模式复用,不断的迭代,若前期设计不合理,则后续的题目增加新的功能(即可扩展性)将会 ...
- Spring Boot WebFlux-06——WebFlux 整合 Redis
第06课:WebFlux 整合 Redis 前言 上一篇内容讲了如何整合 MongoDB,这里继续讲如何操作 Redis 这个数据源,那什么是 Reids? Redis 是一个高性能的 key-val ...
- Django(68)drf分页器的使用
前言 当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面 PageNumberPagination:基础分页器,性能略差 LimitOffsetP ...
- 【题解】SOFTWARE 二分+搜索/dp
题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用的天数是 ...
- 什么是OSI的第7层
1.什么是Internet的第7层? 第7层是指Internet的7层OSI模型的顶层,也称为"应用程序层".这是数据处理的顶层,位于用户与之交互的软件应用程序的表面之下或幕后.例 ...
- 3.QT屏幕分辨率适配
需求:qt的窗口.组件.字体需要适配屏幕分辨率. 思路:qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi 实现: #if(QT_VERSION >= QT_VERSION_CHECK ...
- 49、django工程(cookie+session)
49.1.介绍: 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下诞生. cooki ...