Java基础

1 注释、标识符、关键字

1.1 注释

  • 注释并不会执行,是给写代码的看的
  • 书写注释是一个好习惯

Java注释分为三种

  1. 单行注释 //注释

    //这是单行注释
  2. 多行注释 /* 注释 */

    /*
    * .,:,,, .::,,,::.
    * .::::,,;;, .,;;:,,....:i:
    * :i,.::::,;i:. ....,,:::::::::,.... .;i:,. ......;i.
    * :;..:::;::::i;,,:::;:,,,,,,,,,,..,.,,:::iri:. .,:irsr:,.;i.
    * ;;..,::::;;;;ri,,,. ..,,:;s1s1ssrr;,.;r,
    * :;. ,::;ii;:, . ................... .;iirri;;;,,;i,
    * ,i. .;ri:. ... ............................ .,,:;:,,,;i:
    * :s,.;r:... ....................................... .::;::s;
    * ,1r::. .............,,,.,,:,,........................,;iir;
    * ,s;........... ..::.,;:,,. ...............,;1s
    * :i,..,. .,:,,::,. .......... .......;1,
    * ir,....:rrssr;:, ,,.,::. .r5S9989398G95hr;. ....,.:s,
    * ;r,..,s9855513XHAG3i .,,,,,,,. ,S931,.,,.;s;s&BHHA8s.,..,..:r:
    * :r;..rGGh, :SAG;;G@BS:.,,,,,,,,,.r83: hHH1sXMBHHHM3..,,,,.ir.
    * ,si,.1GS, sBMAAX&MBMB5,,,,,,:,,.:&8 3@HXHBMBHBBH#X,.,,,,,,rr
    * ;1:,,SH: .A@&&B#&8H#BS,,,,,,,,,.,5XS, 3@MHABM&59M#As..,,,,:,is,
    * .rr,,,;9&1 hBHHBB&8AMGr,,,,,,,,,,,:h&&9s; r9&BMHBHMB9: . .,,,,;ri.
    * :1:....:5&XSi;r8BMBHHA9r:,......,,,,:ii19GG88899XHHH&GSr. ...,:rs.
    * ;s. .:sS8G8GG889hi. ....,,:;:,.:irssrriii:,. ...,,i1,
    * ;1, ..,....,,isssi;, .,,. ....,.i1,
    * ;h: i9HHBMBBHAX9: . ...,,,rs,
    * ,1i.. :A#MBBBBMHB##s ....,,,;si.
    * .r1,.. ,..;3BMBBBHBB#Bh. .. ....,,,,,i1;
    * :h;.. .,..;,1XBMMMMBXs,.,, .. :: ,. ....,,,,,,ss.
    * ih: .. .;;;, ;;:s58A3i,.. ,. ,.:,,. ...,,,,,:,s1,
    * .s1,.... .,;sh, ,iSAXs;. ,. ,,.i85 ...,,,,,,:i1;
    * .rh: ... rXG9XBBM#M#MHAX3hss13&&HHXr .....,,,,,,,ih;
    * .s5: ..... i598X&&A&AAAAAA&XG851r: ........,,,,:,,sh;
    * . ihr, ... . .. ........,,,,,;11:.
    * ,s1i. ... ..,,,..,,,.,,.,,.,.. ........,,.,,.;s5i.
    * .:s1r,...................... ..............;shs,
    * . .:shr:. .... ..............,ishs.
    * .,issr;,... ...........................,is1s;.
    * .,is1si;:,....................,:;ir1sr;,
    * ..:isssssrrii;::::::;;iirsssssr;:..
    * .,::iiirsssssssssrri;;:.
    */
  3. JavaDoc:文档注释 /** 注释 */

    /**
    *@Description HelloWord
    *@Author GoddamnCode
    */

1.2 关键字

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
true false null

Java还有3个保留字:true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。

1.3 标识符

  • 标识符由数字(09)和字母(AZ 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
  • 标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。
  • 不能使用关键字作为变量名或者方法名
  • 标识符是大小写敏感
    • Hellohello不是同一个变量名
  • 合法标识符举例:age、$salary、_value、 _1_value
  • 非法标识符举例:123abc、-salary、#abc
  • 可以使用中文命名,但是一般不建议这样去使用。

1.4 数据类型

Java是强类型语言,要求变量的使用要严格符合规定,所有变量都要先定义才能使用。

Java的数据类型分为两大类

1.4.1 基本类型

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7)
  • 最大值是 127(2^7-1)
  • 默认值是 0
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15)
  • 最大值是 32767(2^15 - 1)
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0
  • 例子:short s = 1000,short r = -20000。

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31)
  • 最大值是 2,147,483,647(2^31 - 1)
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0
  • 例子:int a = 100000, int b = -200000。

long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63)
  • 最大值是 9,223,372,036,854,775,807(2^63 -1)
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L
  • 例子: long a = 100000L,Long b = -200000L。
    "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:float f1 = 234.5f。

double:

  • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;

  • 浮点数的默认类型为 double 类型;

  • double类型同样不能表示精确的值,如货币;

  • 默认值是 0.0d

  • 例子:

    double   d1  = 7D ;
    double d2 = 7.;
    double d3 = 8.0;
    double d4 = 8.D;
    double d5 = 12.9867;

    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false
  • 例子:boolean one = true。

char:

  • char 类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(十进制等效值为 0);
  • 最大值是 \uffff(即为 65535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = ‘A’;。

1.4.2 引用类型

  • String 是 类不是关键字

  • 接口

  • 数组

1.4.3 整数类型拓展

int i = 10;//十进制
int i2 = 010;//八进制
int i3 = 0x10;//十六进制
int i4 = 0b10;//二进制

1.4.4 浮点数拓展

最好完全避免使用浮点数进行比较

浮点数是有限的、离散的、、有舍入误差、接近但不等于。

1.4.5 字符拓展

字符可以强制转换为数字

char c1 = 'a'
int a = (int)c1;

所有字符本质还是数字

Unicode编码 2字节 0 - 65536

U0000->UFFFF

1.4.5.1 转义字符
例子
\t 水平制表符
\n 换行符
......

1.5 类型转换

Java是强类型语言,在进行一些运算的时候,需要用到类型转换。

低 -------------------------------------------------------------->高

byte,short,char --> int --> long --> float --> double

为什么long64在float32之前?

因为小数的优先级大于整数

1.5.1 强制转换

类型 =(类型)变量名 (从高到底)

1.5.2 自动转换

从低到高

1.5.3 注意点

  • 不能对布尔值进行转换
  • 不能把对象类型转换成不相干的类型
  • 在把高容量转换到低容量的时候,强制转换
  • 转换的时候时候可能位数超过对应类型的位数导致数据错误,或者精度问题
//jdk7新特性 数字之间可以用下划线分割
int money = 10_0000_0000;
int year = 20;
long total = money * year;//-1474836480 计算时溢出,计算完时默认结果为int,之后才会转换为long
//先把一个数转换为long即可解决
//或者在数字后加L
long total2 = money * (long)year;
money = 10_0000_0000L;

1.6 变量

  • 变量是可以变化的量
  • Java是一种强类型语言,每个变量都必须声明其类型
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  • 变量名必须是合法的标识符
  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

1.6.1 变量作用域

public class Variable{
static int allClicks = 0;//类变量
String str = "hello world";//实例变量
public void method(){
int i = 0;//局部变量
}
}

1.6.2 常量

常量:初始化后不能再改变的值,不会变动的值

final + 类型 + 名 = 值

常量名一般使用大写字母

final double PI = 3.14;

1.6.3 变量的命名规范

  • 所有的变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary(除第一个单词外其他单词首字母大写)
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

1.7 基本运算符

  • 算数运算符:+,-,*,%,++,–
  • 复制运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符: ? :
  • 扩展复制运算符: +=,-=,*=,/=

1.7.1 字符串连接符+

int a = 10;
int b = 20;
System.out.println(" "+a+b);//字符串在前面,会将其他操作数转换成string后进行连接,输出为 1020
System.out.println(a+b+" ");//字符串在后面,前面a+b仍会运算

1.7.2 三元运算符

x ? y : z

如果x为真,结果为y,如果x为假,结果为z

1.8包机制

为了更好地组织类,Java提供了包机制,用于区别类名的命名空间

包的本质就是文件夹

包语句的语法格式:

package pkg1[. pkg2[. pkg3...]];

package必须放在最上面

一般利用公司域名倒置作为包名

为了能够使用某一个包的成员,我们需要在Java程序中期明确导入该包。使用"import"语句即可完成此功能

import package1[.package2...].(classname|*);

导入包下所有类 *为通配符

import xxx.xxx.xxx.*;

1.9 JavaDoc生成文档

javadoc命令是用来生成自己API文档的

参数信息

  • @author
  • @version
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值清空
  • @throws 异常抛出情况

使用命令行查看javadoc信息

javadoc -encoding UTF-8 -charset UTF-8 xxx.java

也可在idea中设置鼠标移动在类上自动显示

【Java】java基础的更多相关文章

  1. java必备基础知识点

    Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...

  2. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

  3. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

  4. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  5. Java SE 基础:常用关键字

    Java SE 基础:常用关键字 常用关键字表

  6. java IO基础操作

    java IO基础,通熟易懂,好久没复习java 基础了.这里是传送门... http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.ht ...

  7. Java学习总结(二)----Java语言基础

    1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...

  8. [转]Java多线程干货系列—(一)Java多线程基础

    Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们 ...

  9. Java 入门基础

    第零章 开始学习Java 1.Java基础最重要 Java学习中,Java的基础.Java面向对象是最关键的,而一些像框架技术等都是建立在基础之上东西. 多多处理问题,积累处理问题的能力. Java框 ...

  10. Java多线程基础:进程和线程之由来

    转载: Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程.当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够 ...

随机推荐

  1. Linux 编译安装、压缩打包、定时任务

    目录 Linux 编译安装 知识储备: wget命令 编译安装 Linux 压缩打包 gzip压缩 bzip2压缩 tar打包 Linux 定时任务 相关文件及操作 Linux 编译安装 编译安装就是 ...

  2. windows下python3.7安装gmpy2、Crypto 库及rsa

    基于python3.7在windows下安装gmpy2 先检查一下是否安装了wheel文件包,在cmd中输入wheel,查看一下,如果没有安装,则输入安装:pip install wheel 如果遇到 ...

  3. SpringSecurity自定义注解和处理器

    登录功能 添加一个配置类 @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Reso ...

  4. LuoguP3932 浮游大陆的68号岛 题解

    Content 在一个无限长的数轴上有 \(n\) 个点.第 \(i\) 个点上面有 \(a_i\) 件物品,且第 \(i\) 个点到第 \(i+1\) 个点的距离为 \(b_i\). 定义从第 \( ...

  5. libevent源码学习(8):event_signal_map解析

    目录event_signal_map结构体向event_signal_map中添加event激活event_signal_map中的event删除event_signal_map中的event以下源码 ...

  6. 关于编写c++动态库常用的定义

    1. 关于 1.1 最近一段时间,写了不少动态库,慢慢的也积累了东西. 1.2 之前一直做Windows的动态库,没有做过Linux和OS X的动态库,太缺乏经验了: 代码缺乏 编译器支持的判断.缺乏 ...

  7. 【LeetCode】104. Maximum Depth of Binary Tree 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:BFS 方法二:DFS 参考资料 日期 题目 ...

  8. 【LeetCode】949. Largest Time for Given Digits 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  9. Sum Of Gcd(hdu 4676)

    Sum Of Gcd Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  10. 应用程序开发 WebApp NativeApp 微信小程序

    Web    Native App  微信小程序 WebApp是指基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能.webapp 框架是一种简单的与WSGI兼容的网络应用程序框 ...