​javaSE基础语法​(2)

目录

java基本数据类型

ASCII 码

Unicode 编码

基本数据类型转换

运算符

算术运算

比较运算符

逻辑运算符

赋值运算符

条件运算符

位运算

表达式的运算顺序

控制语句

if条件结构

switch语句

循环

while & do while语句

for循环语句

break & continue

循环嵌套

Java中的方法

        return语句


java基本数据类型

● 程序员对于每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间.

● 数据类型可分为基本数据类型和引用数据类型 .

基本数据类型:

数值型: 整数类型(byte、short、int、long),浮点类型(float,double)

字符型(char)

布尔型(boolean)

引用数据类型:

(class) 字符串属于类 。

接口(interface)

数组

整数类型 :

● Java 各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以 保证Java程序的可移植性。

● Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ .

(由于小写l与数字1在有些字体上难以辨认,这里建议大家使用大写L)

浮点类型 :

● 与整数类型类似,Java浮点类型有固定的表数范围和字段长度, 不受平台影响.

Java 浮点类型有两种表示形式 :

● 十进制数形式,例如: 3.14 314.0

● 科学记数法形式,如 3.14e2 3.14E2

Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F .

float 占4字节

double 占8字节

逻辑型boolean(布尔) :

● boolean 类型适于逻辑运算,一般用于程序流程控制 。

● java语言中boolean 类型数据只允许取值 true 或 false 。

● 注意:不可以0或非 0 的整数替代false和true,这点和C语言不同。

字符型char :

● char 型数据用来表示一个单个字符.

● char占2字节.

● 用单引号括起来

● 例如:

char c1 = 'a';

● char c2 ='中';

● 可以涵盖世界上所有书面语的字符。

● char运算 char类型是可以运算的因为char在字符编码表中有对应的数值。

● 在java中,对char类型字符运行时,直接当做对应编码表的整数来对待。

char c=‘a’+1; 先将’a’提升为int,计算结果98,对应的字符是b。

代码 :

public class Example {
    public static void main(String[] args) {
        char a='a';
        char c='a'+1;

        int x=(int) a;
        int y=(int) c;
        System.out.print(a+" ");
        System.out.println(c);

        System.out.print(x+" ");
        System.out.println(y);
    }
}

运行结果:

ASCII

● ASCII码:

在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit) 有 0 和 1 两种状 态,因此 8 个二进制位就可以组合出 256 种状态,这被称为 一个字节(byte)。一个 字节一共可以用来表示 256 种不同的状态,每一个状 态对应一个符号,就是 256 个符 号,从 0000000 到 11111111。 ASCII(ASCII American Standard Code for Information Interchange,美国信息互换标准代码) 上个世纪60年代,美国制定了一套字符编码,对英语字符与

二进制位之间的关系,做了统一规定。这被称为ASCII码。 ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制 00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不 能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

缺点: 不能表示所有字符。

Unicode 编码

● Unicode:一种编码,将世界上所有的符号都纳入其中。java中的字符表示使用Unicode编码,可以表示世界上所有国家的语言.

这个编号范围 从 0x000000 到 0x10FFFF (十六进制),有 110 多万,每个字符都有 一个唯一的 Unicode 编号,这个编号一般写成 16 进制,在前面加上U+。

● 例如:“马”的 Unicode 是U+9A6C。 • Java底层采用unicode编码来存储字符.

● 随着互联网的兴起,计算机与网络,计算机与计算机之间的通讯急需一 种统一 的 编码方式 来编译和解释 Unicode 编码. 这种编码方式就是我们现在使用最广泛的 UTF-8,所以,UTF-8 是 Unicode 编码的一种具体实现,它规定了字符转换到二进制编码的一系列规则.

● UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度.

基本数据类型转换

● java中可以从任意基本类型转型到另外的基本类型 .

例外 : boolean 类型不可以转换为其他的数据类型。

● 转换分为默认转换和强制转换

● 默认转换 :整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为:

byte,shor t,char->int->long->float->double byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型强制转换

● 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。

● 有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一 种数据类型,然后再进行计算。

long类型与float类型的大小 :

● 在内存中占用的是4个字节的空间,而long型占用的是8个字节的空间。可是为什么4个字节的float型的最大值会大于long型的最大值呢?

long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是负2的63次方到正2的63次方-1。

● 而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的:

● V=(-1)^s * M * 2^E

● 浮点数的32位不是简单的直接表示大小,而是按照一定的标准分配的。

● 其中第1位,符号位,即S。

● 接下来的8位,指数域,即E。

● 剩下的23位,小数域,即M。

● 也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是

按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却

比长整型的最大值要大。

运算符

● Java 语言支持如下运算符:

● 算术运算符:

+,-,*,/,%,++,--

● 字符串连接运算符:+

● 关系(比较)运算符:

>,<,>=,<=,==,!=

● 逻辑运算符:

!,& , | , &&,||

● 赋值运算符:

= ,+ =,- =,* =,/ =

● 条件运算符

● 位运算符

算术运算

代码:

public class Example {
    public static void main(String[] args) {
        int a = 10;
​
        int i = a++;
​
        System.out.println("i = "+i);
        System.out.println("a = "+a);
​
        i = ++a;
​
        System.out.println("i = "+i);
        System.out.println("a = "+a);
    }
}

运行结果:

比较运算符

 比较运算符的结果都是boolean型 , 也就是要么是true,要么是false.

注意: 比较运算符 == 不能误写成 = .

逻辑运算符

逻辑运算符:

● &—逻辑与 | —逻辑或 !—逻辑非

● && —短路与 || —短路或 ^ —逻辑异或

● “&”和“&&”的区别:

● 单&时,左边无论真假,右边都进行运算;

● 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算

代码:

public class Example {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
​
        if(a==11 & b++ == 21)//这里不会短路,a==11为false后面的语句依然执行,此处b为21
        {
            System.out.println(b);
        }
​
        System.out.println(b);
​
        if(a==11 && b++ == 21)//这里a==11形成短路,后面语句不执行,因此b仍为21
        {
            System.out.println(b);
        }
​
        System.out.println(b);
    }
}

运行结果:

● “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

赋值运算符

● 符号:=

● 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。

代码:

public class Example {
    public static void main(String[] args) {
        int a =10;
        double b = a;
        //此处a,b俩个变量的类型不一样,将a的值赋给b时,int类型会自动转换为double类型
​
        System.out.println(b);
​
        int c = (int)2.0;//2.0为double类型,而c属于int类型,根据前面讲的基本数据类型转换,这里需要强制转换
​
        System.out.println(c);
    }
}

运行结果:

● 扩展赋值运算符: +=, -=, *=, /=, %=

条件运算符

● 语法:

● (条件表达式)? 表达式1:表达式2;

● 条件表达式结果为true,运算后的结果是表达式1;为false,运算后的结果是表达式2;

代码:

public class Example {
    public static void main(String[] args) {
        int x = 20;
        int y = 10;
​
        //下面表达式如果x>y成立,则max就为x;否则为y;其实就是求x,y的最大值.
        int max = (x>y)?x:y;
        System.out.println(max);
    }
}

运行结果:

位运算

● 日常开发中位运算使用相对较少,但是巧妙的使用位运算可以大量减少运行开销,优化算法.

表达式的运算顺序

控制台输入

● 使用标准输入串System.in 使用Scanner取得一个字符串或一组数字 在新增一

个Scanner对象时需要一个System.in对象,因为实际上还是 System.in在取得

用户输入。

● Scanner的next()方法用以 取得用户输入的字符串;

nextInt()将取得的输入字

符串转换为整数类型;

● 同样,nextFloat()转换成浮点型;

nextBoolean()转 换成布尔型。

● 例:

System.out.print("输入");

Scanner scan = new Scanner(System.in);

String read = scan.next ();

System.out.println("输入数据:"+read);

在使用Scanner对象时,需要在文件头带入 java.util.Scanner; 写法为:

import

java.util.Scanner;

控制语句

● 条件语句 - 根据不同条件,执行不同语句。

● if

● if .. else

● if .. else if

● if .. else if .. else if .. else

● switch

● 循环语句 – 重复执行某些动作

● for

● while

● do .. while;

if条件结构

● if条件结构是根据条件判断之后再做处理

if ( 条件 ) {

//语句

}

结合问题 :

if ( 令狐冲Java成绩 > 90 ) {

师父奖励令狐冲;

}

条件表达式必须是一个返回布尔结果的表达式。

语句可以是用{}包含的语句块。

if-else语句的另一种形式为:

if (条件1){

语句1;

} else if (条件2){

语句2;

}……

}else if (条件N){

语句N;

}

switch语句

switch语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个。

switch (表达式){

** case** value1: 语句序列1;

[break];

…………

** case** valueN: 语句序列N;

[break];

[default : 缺省语句;]

}

表达式可以是byte、short、int、char、枚举类型。JDK 7以后,可以使用String类型;

case语句后面只能使用常量表达式;

case后的值不能重复;

某个case分支如果没有提供break语句,则继续执行下一个case后的语句;

当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句;如果没有default子句,则程序直接跳出switch语句。

循环

循环语句功能

在某些条件满足的情况下,反复执行特定代码的功能

循环语句的四个组成部分

循环变量的初始化

循环条件部分

循环体部分

循环变量的更新

循环语句分类

while 循环

do/while 循环

for 循环

while & do while语句

● while 语句为如下形式:

while(逻辑表达式){ 语句; … ; }

执行过程 :

先判断逻辑表达式的值。若 =true.则执行其后面的语句,然后再次判 断条件并反复执行,直到条件不成立为止

do-while 语句为如下形式:

do { 语句; … ; } while(逻辑表达式);

执行过程 :

先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环。

for循环语句

• for 语句为如下形式:

for(表达式1; 表达式2; 表达式3){ 语句; … ; }

• 执行过程

首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句,

接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.

public static void main(String args[]) {

for (int i = 1; i <= 10; i++) {

System.out.println(“i=" + i);

}

}

break & continue

break 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;

代码:

public class Example {
    public static void main(String[] args) {
       int stop = 4;
        for (int i = 0; i <= 5; i++) {
            if( i==10 ){
                //当i等于5的时候跳出循环
                break;
            }
            System.out.println(" i= " + i);
        }
    }
}

运行结果:

循环嵌套

• 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。

• 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层 循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。

• 结束外层循环

• 如果需要从多层循环跳出,则需要使用标签,定义一个标签,如label,

然后在需要跳出的地方,用break label就行了.

Java中的方法

• Java的方法类似于其它语言的函数,方法是解决一类问题的步骤的有序组合,方法包含

于类或对象中.

• 方法在程序中被创建,声明格式:

[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){

Java语句;… … …

[return 返回值;]

}

修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

• 形式参数: 在方法被调用时用于接收外界输入的数据。

• 实参:调用方法时实际传给方法的数据。

• 返回值:方法在执行完毕后返还给调用它的环境的数据。

• 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。

• Java语言中使用下述形式调用方法:对象名.方法名(实参列表)

• 实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,

• return 语句终止方法的运行并指定要返回的数据。

return语句

return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。

有两种格式:

return 表达式; //将表达式的值返回

return; //不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种格式,此类return语句有时可省略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值