第二章基础知识

第二章

IDE的使用

IDE(Integrated Development Environment)是集成开发环境,是用于提供程序开发环境的应用程序,一般包括代码编辑器,编译器,调试器和图形用户界面等工具.

常用的java开发工具:IDEA,Eclipse,myeclipse

注释

在java中有三种注释

//用于单行注释, 快捷键ctrl+/

例如:

//这是主类
public class Hello{

}


/*

*/用于多行注释,快捷键ctrl+shift+/ ctrl+shift+\ 取消注

例如:

/*
这是一个HelloWorld小程序,
public static void main(String[] args){
    	System.out.println("HelloWorld");
	}
这是程序入口.
*/
public class Hello{
	public static void main(String[] args){
    	System.out.println("HelloWorld");
	}
}

/**

*/文档注释,用于为类,方法(函数),属性 功能进行说明,可在调用时提

/**
*@author feng

*/
public class Hello{
	public static void main(String[] args){
    	System.out.println("HelloWorld");
	}
}

关键字

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词).

特点:关键字中所有字母都为小写.
在这里插入图片描述

保留字

定义:现有Java版本尚未使用,但以后版本可能会作为关键字使用.

保留字:goto,const.

标识符

定义:Java 对各种变量、方法和类等要素命名时使用的字符序列称
为标识符.

定义合法标识符规则:由26个英文字母大小写,0-9 ,_或 $ 组成 数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
Java中的名称命名规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:
XXX_YYY_ZZZ

Java变量

变量:是程序中最基本的存储单元,程序执行中数值是可变的.

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

变量是通过使用变量名来访问这块区域的.

要素:包括变量名,变量类型。
Java程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明
格式为:

[修饰符] type varName [=value][,varName[=value]……];
例如: int i = 100;
int i1, i2, i3 = 10;
String s = “hello”

Java数据类型

在java中,把数据分为基本数据类型和引用数据类型.

基本数据类型:整数类型(byte,short,int,long),浮点类型(float,double),字符型(char),布尔型(boolean).

应用数据类型:类(class),接口(interface),数组([]).

整数类型

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

在这里插入图片描述

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

浮点类型

与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响. Java 浮点类型有两种表示形式
十进制数形式,例如: 3.14 314.0
科学记数法形式,如 3.14e2 3

在这里插入图片描述

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

逻辑型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

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。

缺点:不能表示所有字符(例如,汉子在ASCII码中无法表示,所以才有了Unicode编码)

Unicode编码

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个字节的空间。可是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个字节,但是浮点数却比长整型的最大值要大。

运算符

算术运算符

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

int i = 1;
       i += ++i;  
	  i最终的值是多少 
		i=3;

int i = 1;
				2   2			4		5	5
	 int j = ++i +  i++  +  ++i  +  ++i + i++;
问 j最终的结果是多少?i最终的值多少?
		j=18;
		i=6;

字符串连接运算符+

		char l = 'f';
        char j = 'q';
        char n = 'w';
        //在Java中,字符串用"",单个字符用'',其实底层的字符串还是由字符组成。
        System.out.println(l+j+n);
        System.out.println(j+n);
        System.out.println(n+l);
输出分别为fqw
		qw
		wf

关系(比较)运算符

<,>,>=,<=,==,!=
在这里插入图片描述

逻辑运算符

!,& , | , &&,||
在这里插入图片描述

“&”和“&&”的区别:
● 单&时,左边无论真假,右边都进行运算;
● 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
● “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

赋值运算符

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

int i = 1;
       i += ++i;  
	  i最终的值是多少 
		i=3;

同理,-=,*=,/=也一样
在这里插入图片描述

1为short+int赋值给short,即大的数据化小的,需要加强制类型转换。

2是java默认的大化小强制类型转换,只不过底层代码帮助我们实现了。

条件运算符

语法一:(条件表达式)? 表达式1:表达式2;
条件表达式结果为true,运算后的结果是表达式1; 为false,运算后的
结果是表达式2

位运算

日常开发中位运算使用相对较少,但是巧妙的使用位运算可以大量减少运行开销, 优化算法(注意,虽然我们经常用不到,但是在Java库中经常用到,所以我们学会后,在阅读底层代码的时候可以大大降低阅读难度)
在这里插入图片描述

package day02;

import org.omg.Messaging.SyncScopeHelper;

import java.sql.SQLOutput;
import java.util.Scanner;

public class Demo3 {
    public static void main(String[] args) {
        int a=4,b=5;
        byte c=-7;
        /*a=4  0000 0100 << 0000 1000 a=8 左移
          b=5  0000 0101 >> 0000 0010 b=2 右移
          c=-7 1111 1001 >>>0111 0100 c=2147483644 无符号右移
          c:1111 1001 原码1000 0111 反码 1111 1000 补码1111 1001
           c=~(byte)c c=-(c+1)即c=-(-7+1)=6
           a^b(^异或符,即不相同即为真,相同为假) 0000 0001
         */
        String st=(a<b)?"b大于a":"a大于b";
        System.out.println(st);
        System.out.println(a^b);
        System.out.println(a<<1);
        System.out.println(b>>1);
        System.out.println(c>>>1);
        System.out.println(~c);
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入姓名");
        String s=sc.next();
        System.out.println(s);
        char aa=sc.next().charAt(0);
        switch(aa){
            case 'a':
                System.out.println(a);
                break;
            case 'b':
                System.out.println(b);
                break;
            default:
                System.out.println("abc");
        }

    }
}

以上为位运算的实例。

表达式的运算顺序

在这里插入图片描述

package day02;
public class Demo1 {
    public static void main(String[] args) {
        float f=0.2231278653f;//输出后为0.22312787
        //单精度能显示四个字节,所以在输出后会将多余的直接四舍五入
        System.out.println(f);
        double d=12213.561566651654152;//输出后为12213.561566651653
        //同理,双精度能显示八个字节,所以在输出后会将多余的直接四舍五入
        System.out.println(d);
        boolean flag=f<d;
        System.out.println(flag);
        char l = 'f';
        char j = 'q';
        char n = 'w';
        //在Java中,字符串用"",单个字符用'',其实底层的字符串还是由字符组成。
        System.out.println(l+0);
        System.out.println(j+0);
        System.out.println(n+0);
        String f1="你好,世界";
        System.out.println(f);
        /*byte为一个字节,而int为四个字节,小容量向大容量转换,自动转换
        其实127是int类型,但是这里int赋值给byte是java底层自动转换,如果超出byte范围,会出现精度溢出
        int a=258;二进制为0001 0000 0010
        byte b=(byte)a;
        输出后会发现b==2;二进制为0000 0010所以会将前面的0001丢失,这就是精度损失.
         */
        byte a=127;
        int b=a;
        //这里short是容量小的,不能向容量大的自动转换,必须加强行转换short c=b;
        short c=(short)b;
        //精度降低是小数部分转换时的问题,由于小数部分转换为二进制会无线循环,所以会出现精度损失。
        float e=1.23456789f;
        double g=e;
        System.out.println(g);
        System.out.println(a==b);
        System.out.println(a!=b);
        String st="adcder";
        String st1="asdasdf";
        System.out.println(st==st1);
        System.out.println(st!=st1);
        System.out.println(st+st1);//这里的+是连接运算符,进行字符串连接
        System.out.println(b+st);//这里也是字符串连接,即int类型和字符串进行连接
        System.out.println(b+l);//这里是加法运算,即先将'f'转换为int类型,再进行加法运算
        System.out.println(b++);
        System.out.println(b--);
        System.out.println(--b);//126
    }
}

以上为数据转换的实例。

控制台输入

使用标准输入串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 …

if条件结构

if条件结构是根据条件判断之后再做处理
在这里插入图片描述

条件表达式必须是一个返回布尔结果的表达式。
语句可以是用{}包含的语句块。

if-else条件结构

在这里插入图片描述

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语句

do…while循环

do{循环体}

while(判断条件)

while循环

while(判断条件){

循环体

}

while和do…while的区别:while循环是先进行判断,然后满足执行循环体。do…while循环是先进行一次循环体,再进行判断。

for循环

for(语句一;判断条件;语句二){

循环体

}

for循环和while,do…while循环的区别是for循环需要知道循环次数,而while循环和do…while循环就不需要知道循环次数。

break&continue

break语句用于终止某个语句的执行,经常用于终止循环。例如

for(int i=0;i<100;i++){
	if(i==50){
         System.out.print("--------");
        break;
	}
    System.out.print(i);
}
//这里当执行到i==50的时候,语句就执行完毕,不在循环。

continue用于循环体中,用于终止某次循环过程,即跳过这一次循环,后面的循环会继续执行。例如:

for(int i=0;i<100;i++){
	if(i==50){
        coutinue;
    }
    System.out.print(i);
}
//这里会输出除了50的100之内的数,当执行到50时就会终止本次循环,继续从i==51开始循环。

循环嵌套

将一个循环放在另一个循环体内,就形成了嵌套循环。例如:

for(int i=1;i<100;i++){
    for(int j=1;j<100;j++){
        System.out.print(i*j)
    }       
}
//这是一个基础的循环嵌套,即当i=1以后,开始执行j==1到100的循环,当j==100的时候,又开始从i==2开始执行,如此反复当i==100的时候就终止了循环。
a:for(int i=1;i<100;i++){
    for(int j=1;j<100;j++){
        System.out.print(i*j)
            if(i==50){
                break a;
            }
    }       
}
//这里a给外循环做个标记,当 i==50的时候就会终止本次循环,这里的break终止的是for(int i=1;i<100;i++)这个循环。

Java中的方法

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

方法在程序中被创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;… … …
[return 返回值;]
}

修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。

Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,
return 语句终止方法的运行并指定要返回的数据 。

return语句

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

return有两种形式

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

,当 i==50的时候就会终止本次循环,这里的break终止的是for(int i=1;i<100;i++)这个循环。


## Java中的方法

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

方法在程序中被创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
		Java语句;… … …
		[return 返回值;]
}

修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。

Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,
return 语句终止方法的运行并指定要返回的数据 。

return语句

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

return有两种形式

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

return;//不返回任何值,这种形式是方法说明中明确为void类型的方法,即不需要返回值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值