Core Java(二)
二 .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(二)的更多相关文章
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...
- applet示例 WelcomeApplet.java <Core Java>
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.Grap ...
- 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 ...
- Core Java Volume I — 4.7. Packages
4.7. PackagesJava allows you to group classes in a collection called a package. Packages are conveni ...
- Core Java Interview Question Answer
This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...
- Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...
- Core Java读书笔记之String
Java里面的String Conceptually, Java Strings are sequences of Unicode characters. Java里面的String都是Unicode ...
- java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例
java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍 我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...
- JAVA二维数组的复制
JAVA二维数组的复制 笔者今天做一道ccf题目时,遇到要将二维数组拷贝复制时,没有用常规的那种一个一个数的复制,用的是System.arraycopy()来进行复制,下面介绍这个函数的一些注意点: ...
随机推荐
- 抓取git的log文件批处理命令示例
@echoset sincedate="2016-04-28 00:00:01" ::变量set beforedate="2016-04-29 00:0 ...
- vue入门--初始化
VUE初始化时,可以用vue init webpack-simple或者vue init webpack.前者是简易版的工程,后者是标准的初始化.工程创建成功后,打开发现两个的目录结构有很大不同.si ...
- Android WebView回退
在使用webView时,会出现点击按钮让网页页面回到上一个页面的需求,这时可以使用goBack方法. 但是有的安卓用户会习惯点击手机自带的返回按钮,这时会直接关闭当前的activity,而不是网页页面 ...
- firefox工具
1.XPath 查看元素的xpath https://addons.mozilla.org/zh-CN/firefox/addon/xpath-checker/ 2. Tamper Data 查看页面 ...
- Kattis - Babelfish
Babelfish You have just moved from Waterloo to a big city. The people here speak an incomprehensible ...
- 中国人自己的技术!百度开源自研底层区块链XuperChain
中国人自己的技术!百度开源自研底层区块链XuperChain 近年来,我国各行各业迅猛发展,但不少尖端行业和产品仍然依赖进口,关键领域受制于人,火热的区块链领域也是如此. 在中国国际大数据产业博览会现 ...
- anaconda3安装pytorch【window10】
1.离线下载: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/ 在清华镜像软件站下载相应的版本,由于我之前安装了 ...
- [spoj] HIGH - Highways (生成树计数)
传送门 输入格式: 第一行一个整数T,表示测试数据的个数 每个测试数据第一行给出 n,m 分别表示点数与边数 接下来 m 行,每行给出两个数 a,b ,表示 a,b 之间有一条无向边 输出格式: 每个 ...
- qt 透明化方法汇总
一. QT 透明设置 背景,标题栏透明,下级Widget,painter绘出来的(比如,drawtext,drawline)不透明 QWidget window; window.setWindowFl ...
- pytorch 6 batch_train 批训练
import torch import torch.utils.data as Data torch.manual_seed(1) # reproducible # BATCH_SIZE = 5 BA ...