Java的学习之路(Chp2 Java语言基础)

本文介绍了Java语言的基础知识,包括注释的作用,包的管理(package和import语句的使用),编码规范特别是标识符命名和缩进。接着详细讲解了变量的类型,如基本类型的分类(整数、浮点数、字符、布尔)及其操作,包括强制类型转换和自动类型提升。此外,还讨论了运算符的用法和优先级,以及String类型的特性,如字符串拼接。最后提到了局部变量的使用规则和作用域。
摘要由CSDN通过智能技术生成

Chp2 Java语言基础

1.注释:对代码的解释,增强代码的可读性。

2.包

        2.1 package语句

如果使用package语句,则该语句必须作为.java文件的第一个语句,写在任何类的外边

package的名字最好全部小写。

        2.2import语句

import语句表示导入特定的类。

使用 import语句,这个语句必须放在任何类的外部,仅能在package语句之后。

如果想一次导入某个包下所有的类,可以使用 * 通配符,例如下边这个语句

imoprt java.util.*;

 3.编码规范

       3.1标识符命名

Java程序组件基本分为五大类:包、类、变量、函数、常量。

                1)Java标识符由字母、数字、下划线(_)、货币符号($)组成 ,数字不能开头。

                2)Java标识符区分大小写helloworld、HELLOWORLD、HelloWorld是三个不同的名字。

                3)不能与关键字重名

        3.2缩进

4.变量

        4.1变量的含义

package corejava.chp2;

public class TestVariable {
    public static void main(String[] args) {
        int a  ;
        a = 10;                                 #定义变量a,赋值为10
        int  b = 20;                            #定义变量b,赋值为20
        int c, d;                               #定义变量c,d
        int e = 30,f = 40;                      #定义变量e,赋值为30,定义变量f,赋值为40
        c = a + b;                              #把a和b的值相加,并把结果存入c中
        d = 5;                                  #把d的值设为5
        d = d + c;                              #把d和c的值相加,赋值给d
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
    }
}

在Java中,变量是强类型的。所谓的强类型,指的是每一个变量都有自身的类型。不同的变量类型,大小不同,所能存放的数据也不同。

        4.2变量的类型

基本类型总共分为8种:byte、short、int、long、float、double、char、boolean。

                1)整数类型

有四种类型:byte、short、int、long

类型名称                                        所占空间                                     表示范围

byte                                                 1个字节                                        -128~127

short                                                2个字节                                        -32768~32767

int                                                    4个字节                                        -2147483648~2147483647

long                                                8个字符                                        -9223372036854775808

                                                                                                               ~9223372036854775807

字面值:

例如“int  a = 5;”,在这个代码中a是变量,5是字面值

                2)浮点数类型

float所占空间为4个字节;

double所占空间为8个字节。

字面值有两种。第一种是直接给出小数,例如1.5,-0.38等,这种是double类型

如果需要float类型,在后边加字母f(大小写均可),如:1.6f,-10.39F。

第二种是用科学计数法,例如:-1.5*10^23可以用-1.5e23表示,3.8*10^-5,可以用 3.8e-5表示。float类型的字面值在数值后边加f。例如:

double d = 2.67e13;

float f = 1.57e-3f;

                3)字符类型

char所占空间为2个字节。

在计算机中,一个字符是由一个正整数表示,这个整数被称为字符的编码。

Java中char类型存放的就是字符的编码。'A'的编码为65,用16进制表示为0X41

给一个字符变量赋值的三种方式:字面值赋值,编码赋值,unicode赋值。三种赋值方式的语法如下:

char ch1 = 'A';             //字面值赋值

char ch2 = 65;            //编码赋值

char ch3 = '\u0041';   //unicode赋值

字面值赋值:直接给出用单引号包围的单个字符。

编码赋值:直接给出字符的编码值

unicode赋值:在单引号之下给出\u和4位十六进制的unicode编码。

                4)布尔类型

这个类型只有两种字面值true和false。

        4.3变量的基本操作

                1)强制类型转换

强制转化的语法如下 :

(类型)变量

b = (byte) a;

先分配一个byte类型的临时空间,然后把a的值转换成byte类型,然后放到这个临时空间 ,最后 把临时空间的值赋给b。

但是如果a中的数值的范围超过了b所表示的范围,使用强制类型转换也能正常编译,但是转换的结果会有问题。例如:

short s = 450;                                        

byte b = (byte) s;                            

System.out.println(b);                        

一个short类型占据2个字节,一个字节是8个二进制位,所以一个short变量占据16个二进制位。这16个二进制位中,有15个字节表示数值,最高位表示数值的符号,也称之为符号位。如果是整数,为0,;负数则为1。

450为正数,所以符号位为0,然后把450转换成分二进制数,得到结果111000010,除了符号和数值之外,其他位补0,最后在内存中表示如下:

000000011100001

0

然后把s强制转换成byte类型,此时会开辟出一个字节的空间,并取short类型的低八位,得到结果如下:

11000010

可以看到,转换过程中舍弃了short变量中的部分内容。

                2)自动类型提升

Java在计算c=a+b这样的式子时,先计算a+b的值,然后赋值给变量c。

基本过程如下:

                计算a+b的值→保存到临时变量→把临时变量的值赋给c

        尽管a,b两个变量都是byte类型,但是Java为临时变量选择类型时,会自动提升为int类型 ,大小为4个字节。上述的第三步就变成了把int类型赋值给byte类型,从而产生了一个编译错误。

        要避免这个问题,需要对其结果进行强制类型转换:

byte c = (byte) (a+b)

由于是对a+b的结果进行强制转换,因此要对a+b这个表达式加上括号。

Java自动类型提升的规则如下:

1.如果运算数中存在double,则自动类型提升为double

2.如果运算数中没有double但存在float,则自动提升类型为float

3.如果运算数中没有浮点类型,但存在long,则自动类型提升为long

4.其他所有情况,自动类型提升为int(byte+byte,byte+short之类的运算都会被自动提升为int类型。)

                3)运算符

①赋值号=:计算右边的内容赋值给左边

②基本数学运算:加(+)减(-)乘(*)除(/)取余(%):例如3/2这样的表达式,由于3和2都是整数类型,则根据自动类型提升规则,结果也是一个整数类型,因此结果为1。若希望得到精确的结果1.5则需要使用3.0/2这样的表达式,来保证结果是double类型的。

③+=,-=,*=,/=:a=a+2的简写形式a+=2

④++与--:对于a+=1这种,还有更简单的写法:a++;a-=1可以用a--来代替。

⑤位运算符:按位与(&),按位或(|),按位异或(^),取反(~)。位运算符主要用于对数据的每个二进制位进行计算。

int i = 10;
i = ~i;

z这段代码中先定义了一个int类型变量i,这个变量占据32位(4个字节),在内存中表示如下:

00000000000000000000000000001010

 然后~i表示按位取反,原数位的1变成0,0变成1,得到结果如下:

11111111111111111111111111110101

 

 这个数表示十进制的数-11。

⑥移位操作:算术右移(>>),逻辑右移(>>>),左移(<<)。

左移可以理解为右边补0,右移可以理解为左边补0。

例如:

int n = 12;
System.out.println(n>>2);        //结果为3
System.out.println(n>>>2);       //结果也为3
n = -12;
System.out.println(n>>2);        //结果为负
System.out.println(n>>>2);       //结果为正!!

⑦布尔运算

首先把布尔运算分为两大类:

第一类运算符为:>(大于),>=(大于等于),<(小于),<=(小于等于),==(相等),!=(不相等)。这些运算符接受两个参数,返回一个布尔值,表示判断结果。

第二类运算符为:与(&&),或 (||),非(!)。这些运算符只能接受两个布尔类型的运算数。

⑧运算符的优先级

优先级运算符说明
1()最高优先级
2!,~,++,--
3*,/,%
4+,-先乘除后加减
5<<,>>,>>>移位操作
6<,<=,>,>=比大小
7==,!=判断是否相等
8&按位与
9^异或
10|按位或
11&&逻辑与
12||逻辑或
13?:三元操作
14=,+=,-=,*=,…所有的赋值操作

                4)String类型初探

String类型的三个特点:

一、String类型有字面值:String类型的字面值为双引号(“”)中包含的内容,要注意单引号和双引号的区别

char ch1 = 'A';            //单引号用在字符类型字面值上
char ch2 = 'AB';           //错误!char类型不能表示多个字符
char ch3 = "A";            //错误
String str1 = "A";         //表示只有一个字符的字符串
String str2 = "ABC";       //表示有多个字符的字符串
String str3 = 'A';         //错误!

二、String类型支持加法运算

String str1 = "HelloWorld";
String str2 = "Welcome";
System.out.println(str1+str2);
System.out.println("a"+"b");        //字符串加法,输出ab
System.out.println('a'+'b');        //字符加法,将a与b的编码相加

三、任何类型与String类型相加,结果都为String类型

int i = 10;
System.out.println("1234"+i);

输出结果为123410。

                5)局部变量

一、先赋值后使用

public static void main (String args[]){
    int a;
    System.out.println(a);        //编译时错误!因为a没有赋值
}

二、局部变量有作用范围,其范围从定义的位置开始,到包含它的代码块结束。

三、重合范围内,两个局部变量不能有命名冲突

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平行宇宙的阿木木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值