二 .JAVA语言基础

1.注释,标识符,关键字

 Comments

        用于解释说明程序的文字

Java中注释分类格式

单行注释:格式: //注释文字

               多行注释:格式 /*  注释文字  */ 

               文档注释:格式:/** 注释文字 */

        对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。

对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

  Identifiers

就是给类,接口,方法,变量等起名字时使用的字符序列。

——组成规则

英文大小写字母;

数字字符;

$和_;

——注意事项

不能以数字开头

不能是Java中的关键字

区分大小写

——常见命名规则

包:

都有小写单词组成,中间以.分割

例:zhangsan.download

类或者接口:HelloWorld

一个单词:单词的首字母必须要大写

多个单词:每个单词的首字母都要大写

例:Student,HelloWorld

方法或者变量: main   userName  passWrod

一个单词:单词的首字母必须要小写

多个单词:第一个单词首字母小写,从第二个单词的首字母要大写

例:name,main,studentName

常量:      STDTUDENT_AGE

一个单词:全部大写

多个单词:所有字母大写,并用下划线隔开单词

例:MAX,STUDENT_MAX_AGE

  Keywords

       被Java语言赋予特定含义的单词

组成关键字的字母全部小写

goto和const作为保留字存在,目前并不使用

类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观

        Java 中共有 53 个标识符或称为保留字,其中 50 个为关键字(goto, const 目前尚未使用);另外 3 个是值,这 3 个值为 true, false 和 null

2.进制转换

——进制

       就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

——不同进制的数据组成

二进制——由0,1组成。以0b开头;

八进制——由0,1,…7组成。以0开头;

十进制——由0,1,…9组成。整数默认是十进制的

十六进制——由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头;

——进制转换

其他进制到-->十进制  位权展开法
                      0b100110
                      1*2^5+1*2^2+1*2^1=32+4+2=38
                      0100
                      1*8^2=64
                      0x100
                      1*16^2=256
                 十进制-->其他进制

——有符号数据表示法

在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

——原码

就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

byte b=1;

0000 0001

1000 0001

——反码

0000 0001

1111 1110

正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外

——补码

1111 1111

正数的补码与其原码相同;负数的补码是在其反码的末位加1。

Q3:已知某数X的原码为0b10110100,试求X的补码和反码。

10110100

11001011

1100 1100

已知某数X的补码0b11101110,试求其原码。

1110 1110

1110 1101

1001 0010

3.常量与变量

       常量:在程序执行的过程中其值不可以发生改变;

常量的分类:字面值常量;自定义常量(面向对象部分讲);

第1种意思,就是一个值,这个值本身,我们可以叫它常量,举几个例子:

整型常量: 123

实型常量:3.14

字符常量: 'a'

逻辑常量:true、false

字符串常量:"helloworld"

这只是说法的问题,比如7这个数,我们就可以说“一个int类型的常量7 ”

第2种意思,表示不可变的变量,这种也叫常量,从语法上来讲也就是,加上final,使用final关键字来修饰某个变量,然后只要赋值之后,就不能改变了,就不能再次被赋值了,据个例子:

final int i = 0;

那么这个i的值是绝对不能再被更改了,只能是0,所以说是不可变的变量,这句话看似矛盾,其实不矛盾,这句话这样理解:

i就是一个int类型的变量,变量本身是可变的(可被更改值),但是现在加了final,所以不可变了,所以是不可变的变量。

变量:在程序执行的过程中,在某个范围内其值可以发生改变的量

    int a=10;

     a=as;

         变量定义格式:数据类型 变量名 = 初始化值;

从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。

4.基本数据类型

——使用变量注意事项

——作用域

变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。

——初始化值

没有初始化值不能直接使用

——在一行上建议只定义一个变量,可以定义多个,但是不建议

——数据类型转换

——默认转换(小转大)

byte,short,char—int—long—float—double

byte,short,char相互之间不转换,他们参与运算首先转换为int类型

——强制转换

目标类型 变量名=(目标类型)(被转换的数据);

byte a = 3;

int b = 4;

byte c = 7;//正确       byte c = 3+4;//正确

byte d = a+b;//错误,变量相加,会先看类型

byte e = (byte)(a+b);

Java 语言是一种强类型的语言。强类型的语言有以下几个要求:

变量或常量必须有类型:要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用。

赋值时类型必须一致:值的类型必须和变量或常量的类型完全一致。

运算时类型必须一致:参与运算的数据类型必须一致才能运算。

但是在实际的使用中,经常需要在不同类型的值之间进行操作,这就需要一种新的语法来适应这种需要,这个语法就是数据类型转换。

在数值处理这部分,计算机和现实的逻辑不太一样,对于现实来说,1和 1.0 没有什么区别,但是对于计算机来说,1 是整数类型,而 1.0 是小数类型,其在内存中的存储方式以及占用的空间都不一样,所以类型转换在计算机内部是必须的。

Java 语言中的数据类型转换有两种:

自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。

强制类型转换:强制编译器进行类型转换,必须在程序中编写代码。

由于基本数据类型中 boolean 类型不是数字型,所以基本数据类型的转换是出了 boolean 类型以外的其它 7 种类型之间的转换。下面来具体介绍两种类型转换

的规则、适用场合以及使用时需要注意的问题。

1、自动类型转换

自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语法,而是由 JVM 自动完成。

转换规则:从存储范围小的类型到存储范围大的类型。

具体规则为:byte→short(char)→int→long→float→double

也就是说 byte 类型的变量可以自动转换为 short 类型,示例代码:

byte b=10;

short sh=b;

这里在给sh赋值时,JVM首先将b的值转换成short类型然后再赋值给sh。

当然,在类型转换的时候也可以跳跃,就是byte也可以自动转换为int类型的。

注意问题:在整数之间进行类型转换的时候数值不会发生变化,但是当将整数类型特别是比较大的整数类型转换成小数类型的时候,由于存储精度的不同,可能

会存在数据精度的损失。

2、强制类型转换

强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种

损失时才进行该类型的转换。

转换规则:从存储范围大的类型到存储范围小的类型。

具体规则为:double→float→long→int→short(char)→byte

语法格式为:(转换到的类型)需要转换的值

double d=3.14;

int i=(int) d;

注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。

5.全局变量与局部变量

全局变量:在一个对象被new时创建,在对象被销毁时销毁,全局变量是对象的一部分,同对象一样存储在堆中,全局变量通过对象来访问
局部变量:在方法,构造函数或代码块中声明,使用前必须初始化

Core Java(二)的更多相关文章

  1. Atitit java 二维码识别 图片识别

    Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...

  2. applet示例 WelcomeApplet.java <Core Java>

    import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.Grap ...

  3. Core Java Volume I — 1.2. The Java "White Paper" Buzzwords

    1.2. The Java "White Paper" BuzzwordsThe authors of Java have written an influential White ...

  4. Core Java Volume I — 4.7. Packages

    4.7. PackagesJava allows you to group classes in a collection called a package. Packages are conveni ...

  5. Core Java Interview Question Answer

    This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...

  6. Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档

    今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...

  7. Core Java读书笔记之String

    Java里面的String Conceptually, Java Strings are sequences of Unicode characters. Java里面的String都是Unicode ...

  8. java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例

    java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍   我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...

  9. JAVA二维数组的复制

    JAVA二维数组的复制 笔者今天做一道ccf题目时,遇到要将二维数组拷贝复制时,没有用常规的那种一个一个数的复制,用的是System.arraycopy()来进行复制,下面介绍这个函数的一些注意点: ...

随机推荐

  1. EF Code First 使用 代码优先迁移(二)

    第一步:如果不是建立的MVC项目,可能需要在控制台输入 :Install-Package EntityFramework 删除之后在执行Enable-Migrations 第二步:添加你需要修改的属性 ...

  2. Sumblime Text3中使用vue-cli创建vue项目,代码不高亮,解决

    问题如下:在Sumblime Text3中打开vue-cli常见的项目,代码一片灰色 解决如下: 第一步:下载文件Vue components  链接 GitHub - vuejs/vue-synta ...

  3. JavaScript 获取某个字符的 Unicode 码

    function getUnicode (charCode) { return charCode.charCodeAt(0).toString(16); } 获取的是 UTF-16 编码的值,不足4位 ...

  4. js input 只能输入数字

    HTML网页上这么写 <input type="text" style="ime-mode:disabled;" onpaste="return ...

  5. Pyhton学习——Day22

    #有缩进的代码表示局部作用域的代码#if_name_ =='_main_' # while True#先引入一个os模块import os,sys,time,json# print(os.path.d ...

  6. centos7安装anaconda之后报错:rpm: /home/wyl/anaconda3/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)

    1.报错 参考:https://stackoverflow.com/questions/47633870/rpm-lib64-liblzma-so-5-version-xz-5-1-2alpha-no ...

  7. Node_进阶_2

    第二天 一.复习: Node.js开发服务器.数据.路由.本地关心效果,交互. Node.js实际上是极客开发出的一个小玩具,不是银弹.有着别人不具备的怪异特点: 单线程.非阻塞I/O.事件驱动. 实 ...

  8. [NOIP2012提高组]开车旅行

    题目:洛谷P1081.Vijos P1780.codevs1199. 题目大意:有n座海拔高度不相同的城市(编号1~n),两城市的距离就是两城市海拔之差.规定每次只能从编号小的城市走到编号大的城市. ...

  9. 虚拟机安装mac

    没成功,把几篇不错的文章先记录下地址 http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1437039 http://bbs.pcbeta. ...

  10. vue-router的创建(1)

    vue-router的创建 <!doctype html> <html lang="en"> <head> <meta charset=& ...