赞
踩
目录
1.标识符
(1)读音,标zhi符
(2)标识符就是程序员在编写程序时,给类/变量/方法等起的名字.
(3)标识符的命名规则
【1】标识符由数字、字母、下划线_、美元符号$。
注意这里面这个字母范围比较广(英文字母,中文,日语,韩语....其它语言),但是我们一般还是比较习惯用这个英文字母
【2】不可以以数字开头,啥意思,比如说你起个名叫1test 、@h、 1233#
【3】不可以使用java中的关键字。这个关键字呢我们在下一节会说到。那关键字呢其实就是这些带色的 public calss ,那你说我起名的时候能叫public class class肯定不行。不要和关键字有有重复。
(4)遵循规范
【1】区分大小写, NAME name 虽然这俩都是name,但是他们是两个标识符。
【2】见名知意,增加可读性。
【3】遵循驼峰命名。什么是驼峰命名呢?就是以单词为单位,首字母大写,你比如说我来StudentName,那你看这是不是很像骆驼的后背隆起来的两部分,一高一低的对吧。但是你要注意了,并不是说的所有的名字都得驼峰命名。你像这个args,这个还要看你给谁来起名
类名:首字母大写,其余遵循驼峰命名
方法名、变量名:首字母小写,其余遵循驼峰命名
包名:全部小写,不遵循驼峰名
常量名:全部大写
这些规则不用刻意去记,你先模仿,潜移默化当中你熟练了就是你自己的东西。
原来写的代码中颜色不一样,public class static .....这些都是蓝色字体,对于蓝色的字体实际上就是关键字。java中的关键字有哪些呢?看下面哪个表。
关键字都是小写的英文单词,大家先不要被这些单词吓到,先不着急去背它,这个我们后面会逐渐去渗透,讲到哪你就记到哪就行。
java语言当中,常量分为两种:一种是字面常量(字面值),一种是使用final修饰的符号常量。我们目前先看字面常量。
字面常量就是字面的意思,是个具体的数据。具体应用如下
- /*
- 18 整型字面值
- 160.5 浮点字面值
- true/false 逻辑字面值(吃饭、性别)
- 'a' 字符字面值:单引号引起来的
- "打篮球" 字符串:双引号引起来的
- */
- public class Test01_Const{
- public static void main(String[] args){
- System.out.println(18);//整数
- System.out.println(160.5);//double
- System.out.println(true);//boolean
- System.out.println(false);
- System.out.println('a');//字符
- System.out.println("打篮球");//字符串
- }
- }
变量就是变化的量,比如张三的年龄今年18岁,明年19岁,后年20岁,这里年龄就是一个变化的量。
变量如何(声明)定义、赋值、使用呢,具体应用如下
- public class Test02_Var{
- public static void main(String[] args){
- //定义(声明)变量 年龄 int代表整数
- int age;//定义了一个int类型的变量,变量名叫age.
- //变量不赋值(没有初始化)那么不能使用。
- //System.out.println(age);
- //变量的赋值
- age=18;//=意思是右边的值赋给了左边、
- age=34;
- //age=1.0;//1.0是小数所以编译会报错。
- age=100;
-
- //变量的使用
- System.out.println(age);
-
- //int age=20;//变量不能够重复去定义。
- int age1=20; //变量名和赋值语句一块写。
- int x,y,z;//定义了3个int类型的变量,变量名分别叫x,y,z.
- x=y=z=100;//多个赋值符号,顺序从右往左
- System.out.println("x="+x+";y="+y+";z="+z);
- }
- }
变量是变化的量,这个量指的是数据,数据肯定存到内存里的,具体怎么存呢?比如存10,存160.5,存true,内存里面可以存不同类型的数据。那我要访问这些数据,我是不是得先找到这块内存然后再访问。问题是我怎么找到对应的内存呢?你比如说我设这块内容是a,这块内存是b,这块内存是c....,这个a,b,c是不是就是变量名啊。当我想访问10的时候,我直接通过变量名a就可以访问到。所以变量名实际上可以理解成内存单元的别名。变量名好比你的宿舍号,我通过宿舍号是不是可以找到你宿舍里面的人吧。
变量的三要素是:数据类型、变量名、变量值。例如int age=18;int是数据类型(后面说),age是变量名,18是变量值。
- /*
- 变量的分类:根据变量所在的位置
- 局部变量:方法体里面定义
- 局部变量中,不同作用域下变量名可以重复
- 成员变量:方法之外定义
- 变量的作用域
- */
- public class Test03_Var{
-
- int a=100;//成员变量
- //System.out.println(a);
-
- //程序的入口
- public static void main(String[] args){
- int a=1001;//局部变量
- System.out.println(a);
- }
-
- //方法
- public void eat(){
- int a=400;//局部变量
- System.out.println("eat方法中的:"+a);
- }
-
- int c=200;//成员变量
- //System.out.println(c);
- }
当时在讲变量时候我说了这个变量是一定要有数据类型,这个数据类型怎么理解呢?这个数据类型就好比宿舍的房间类型。比如宿舍是不是单人间,4人间或者8人间。不同的宿舍类型占地面积不同,单人间小点,套房就大点。那java语言中不同的数据类型在内存中开的空间也是不一样。我们时讲变量的时候说到了这个int,整数类型。当然java中的类型不仅有这一个,那还有那些呢?我们来看接下来的数据类型。
整数类型分常量和变量,
(回忆)什么叫常量和变量?比如定义变量 int age=18; 这里18是字面常量, age是变量,把字面常量值赋给age变量。那这的18是不是就是整型字面值啊,age是整型的变量。所以整型这分常量和变量,先说常量
(1)进制
通常我们说的整型字面值默认的是十进制的。一说到这个十进制我们感觉很亲切。那么在计算机当中我们常用的还有二进制、八进制和十六进制。什么是进制呢?
所谓的进制就是逢几进1,十进制是由0~9这10个数组成,二进制由0和1两个数组成,十六进制由0~9、A~F这16个数组成。
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
二进制 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
十六进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
一般我们在代码中写的整数默认是十进制的,如果我们想表示其它进制怎么写呢?
- public class Test04_TypeZheng{
- public static void main(String[] args){
- System.out.println(10);//十进制
- System.out.println(0b10);//二进制
- System.out.println(010);//八进制
- System.out.println(0x10);//十六进制
- }
- }
进制转换:这块属于扩展,你想听就听一下,不想听你就过。因为有可能特别特别零基础的人大学里面没有接触过计算机这块的内容的人听着可能有点蒙,那咱们在这提一下,当然还是建议你听。
二进制转换十进制
比如:1101,不是1101嘛?最后一位是2的0次幂....每位再进行一个相加,最终得到的这个数就是十进制
所以二进制的1101就是十进制的13
十进制转换二进制
比如:13 二进制转十进制----》短除法,即一直除以2,直到商是0就不再往下除了,然后我们将得到的余数倒着数出来。----->所以十进制13对应的就是二进制的1101。
八进制转换16进制
把十进制当做一个中转站,先八进制转十进制,然后十进制转十六进制。所以二进制和十进制转化你要是会了,那其他的进制也是通用的道理
系统计算器
实际上进制不用自己转换,可以用系统提供给我们的计算器---》程序员
数据类型 | 所占字节数 | 取值范围 |
---|---|---|
byte | 1 | -128~127 (- ~ -1 ) |
short | 2 | -32768~32767( - ~ -1) |
int | 4 | -2147483648~2147483647( - ~ -1) |
long | 8 | - ~ -1 |
- public class Test05_TypeZheng{
- public static void main(String[] args){
- //byte -128~127 默认的整数型的字面值是int类型
- byte b=100;//没问题
- //b=128;//错误: 不兼容的类型: 从int转换到byte可能会有损失
-
- //short
- short s=30000;
-
- //int i=234567891111;//错误: 过大的整数: 234567891111
-
- //对于long类型的数据来说,如果整数字面值超过int取值范围,那么该字面值必须加
- //字母L或l
- long l=234567891111L;//错误: 过大的整数: 234567891111
- System.out.println(l);//输出是精确输出
- }
- }
表示形式一:小数
3.14 5.677
表示形式二:科学计数法
3.14 =314e-2=314乘10的-2次幂
5.677= 5677e-3
问题1:精度指的是小数点后面的位数吗?
指的是从左开始第一个不为0的数到最后一个数,比如0.00305,有效位数就是4位。 300.527 就是6位。
问题2:同样是4个字节int和folat,为什么float表示的范围大?
int 32 1符号位 31位存数据
float 32 1f符号位 8位指数位,23尾数位 例如:314e-2= 314尾数位 -2叫指数位
代码的实现
- public class Test06_TypeXiao{
- public static void main(String[] args){
- //float
- //错误: 不兼容的类型: 从double转换到float可能会有损失
- /*
- 1.浮点字面值默认的数据类型是double类型
- */
- //float f=3.14567891234;
-
-
- //给float类型的数据赋值,我们加f
- //
- float f=3.14567841234f;
- System.out.println(f);//3.145679 精度有损失,不是四舍五入
- f=0.0000014567841234f;
- System.out.println(f);//3.145679 精度有损失,不是四舍五入
-
- float ff=0.3f;
- double bb=0.3;
- /*== 判断两边的数相等,相等返回true,不相等返回false
- 小数在计算机当中采用的是近似值来保存的
- */
- System.out.println(ff==bb);//false
- }
- }
boolean , 占1字节, 只有true和false两个值
- public class Test07_TypeBoolean{
- public static void main(String[] args){
- //true false
- boolean b=true;
- System.out.println(b);
- /*
- 错误: 不兼容的类型: int无法转换为boolean
- */
- //b=0;
- System.out.println(b);
-
- //错误: 不兼容的类型: String无法转换为boolean
- //b="true";
-
- System.out.println("true");
- System.out.println(false);
- }
- }
5.4.1普通字符和转义字符
字符类型char,是由单引号引起来的,占2个字节, 采用unicode编码
转义字符
- public class Var08{
- public static void main(String[] args){
- //定义char类型的变量
- //字符可以表示字母,数字,汉字,符号
- char ch1='a';
- System.out.println(ch1);
- char ch2='A';
- System.out.println(ch2);
- char ch3='3';
- System.out.println(ch3);
- char ch4='?';
- System.out.println(ch4);
- char ch5='中';
- System.out.println(ch5);
-
- //字符类型来说,单引号里面不能什么都不写。
- //单引号引起来的是单个字符
- /*char ch6='';
- System.out.println(ch6);
- char ch7='中国';
- System.out.println(ch7);*/
-
-
- /*
- 转义字符
- \n 换行
- \t 制表符的位置
- */
-
- char ch7='\n';
- System.out.println("aaa"+ch7+"bbb");
- System.out.println("aaa\nbbb");
- System.out.println("aaa\tbbb");
-
- System.out.println("aaa\bbbb"); //aabbb
- System.out.println("aaa\rbbb"); //bbb
-
- System.out.println("Java");
- System.out.println("\"Java\"");
- System.out.println("\'Java\'");
- System.out.println("\\Java\\");
-
- }
- }
计算中只能识别0和1,那么这个字符是怎么存储的呢?这实际上通过字符编码来实现的。
- public class Test09_TypeChar{
- public static void main(String[] args){
- //字符unicode编码 2个字节
- char c1='a';
- System.out.println(c1+90);//输出187, 97
- char c2='A';
- System.out.println(c2+90);//输出155, 65
-
- //asc码 8位
- char c3='中';
- System.out.println(c3+90);//20103-90=20013 \u4e2d
-
- //字符我们看着是一个字符,实际上在计算机中存储的是字符对应的码值
- char c5='a';
- int i1=c5;
- System.out.println("i1========="+i1);//97
-
- int num2='a';
- System.out.println(num2);
-
-
- //====================
- int i2=100;
- char c6=i2;
- System.out.println("c6========="+c6);//d
-
- char c4=100;
- System.out.println("c4========="+c4);//输出字符d
- }
- }
java是一种强类型的数据语言,那么计算的时候,如果数据类型不一致的时候怎么操作?
问题1:int给double没问题,但是你double给int怎么就报错了?
装水问题,所以一个int 一个double 4 8 小---》大是不是直接就装进去了,大到小的我是强制转换
问题2:强转存在四舍五入吗?
强制类型转化,不存在四舍五入
结论:在做赋值和算术运算的时候,如果数据类型不一致就需要进行类型转换,类型转换分自动类型转换 强制类型转换
问题3:强制类型转换作用:编译不报错,但是精度损失
规则:
1.布尔类型不参与类型转换,也不会参与到计算中
2. byte1,short2,char2--->int4-->long8--->float4--->double8
3.对于byte,short,char类型来说只要他们在表述的范围内,赋值时不需要强转直接赋值即可。
4.同一个表达式中如果有多个类型的话,那你就转成当前表达式中基本最高的类型。最后再统一进行运算。运算结束后在赋值的时候,如果等号两边的值不是同一个类型的话,需要进行类型转换。如练习:输出1+3.124f+34.6+'a'+true的结果;
问题4:特殊情形
byte b=12;://对于byte short char类型来说只要他们在表述的范围内,赋值时不需要强转直接赋值即可。
- public class Test10_TypeSwitch{
- public static void main(String[] args){
- //错误: 不兼容的类型: 从double转换到int可能会有损失
- int i1=(int)3.64; //int 4 double 8
- System.out.println(i1);
-
- double d1=100;//类型自动转换
- System.out.println(d1);
-
-
- System.out.println("============");
- double dd=1+3.124f+34.6+'a';
- System.out.println(dd);
- int ii=(int)dd;
- System.out.println(ii);
-
- //特例
- byte b=12;
- System.out.println(b);
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。