[Java]介绍|环境|编码|数据类型|String|运算符|标准输入|if语句|循环语句|三元运算符|循环语句|swich语句

一、介绍

1、java是oracle(甲骨文)公司的。

2、JAVA语言有3类应用

1)JAVAME

用于嵌入式开发。

比如:电视机顶盒、打印机、PDA又称掌上电脑(手机、平板电脑、游戏机、扫码枪)。

2)JAVASE

JAVA基础,用于桌面应用程序开发,软件以windows窗口模式打开,如QQ、音乐播放器。

3)JAVAEE

后端开发。开发网页、app。

3.垃圾回收

垃圾回收在java程序运行过程中自动启用,程序员无法精准控制和干预。

二、环境

1、jvm、jre、jdk

1)jvm

java虚拟机,安装jvm可实现跨平台。

java中所有的基本类型都有固定的存储范围和所占内存空间的大小,而不是受具体操作系统的影响,以保证java程序的可移植性。这是因为jvm,即java虚拟机做了调整。

2)jre

包含Java虚拟机和核心类库。有了jre,java程序就可以正常运行起来。

3)jdk

软件开发工具包,包含了程序运行时所需的工具和jre。

总之,安装jdk即可。

2、运行程序

一个程序在运行对的时候有两个基本的指令就是java.exe和javac.exc

//一个类名为TestJava01的类
public class TestJava01{
//执行类的入口函数
    public static void main(String[] arg){
    //打印语句
            System.out.print("这是我的第一个java文件");
    }
}

1)javac.exe

功能是编译,具体解释:将一个.java类型的文件经过转化(编译),得到一个.class文件的过程。

一个类对应一个.class文件。我们将.class文件称为字节码文件。

javac.exe xx.java #会得到xx.class

2)java.exe

运行.class文件

java 类名

虽然我们这里出现了乱码,解决乱码:在编译的时候设置编码方式

3、配置环境变量

目的:将一些文件的路径系统化,可直接调用文件名执行文件。

三、编码

1)Unicode(UTF-16 LE)

全球统一编码,包含所有的语言。每个字符占2个字节,因而可以用16进制编码表示。

JAVA默认用Unicode,但是char类型是和ASCII编码等价的。

    public static void main(String[] args) {
        char a='\u0061';
        char b=97;
        System.out.println(a); //a
        System.out.println(b); //a
    }

2)UTF-8

如果文档以英文为主时,Unicode编码比ASCII编码需要多一倍的存储空间,UTF-8编码由此而生。

全球统一编码,包含所有的语言。特点:英文字母占1个字节,汉字占2个字节。

3)ASCII

ASCII也称为美国编码。占用1个字节。

ASCII对照码

 4)ISO8859-1

欧洲编码。

四、基本类型

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

1、总结

数据类型大小/位默认值(全局变量才有)最小值最大值位数
byte80-1281273
short160-32768327675
char16空格0655355
int320-2147483648214748364710
long640l-9223373036854775808922337303685477580719
float320.0 -3.4E+383.4E+38
double640.0 -1.7E3081.7E308
booleanfalse只有两个值:true/false

2、自动转换顺序

1)byte、short、char、int、long、float、double

位  1            2            2        4          8          4           8

        byte a=1;
        //a=a+1; //报错,因为等式右边a+1为int型,把int型赋值给byte型要强制类型转换。
        //应改写为
        a=(byte)(a+1);
        System.out.println(a); //4

2)short和char不会相互转换

因为char是无符号的,范围是[0,65535]。而short的范围是[-32768,32767]他们互不包含。

3)byte short char 三者在计算时会被转化成int类型

3、char

1)char存什么

可以存一个(字母、数字、字符),一个汉字,一个转义字符,一个ascii编码,一个Unicode编码。

2)编码方式

java字符采用Unicode编码,每个字符占两个字节(16位)

3)使用

        char zi_mu='a';
        char han_zi='哈';
        char zhi=97;
        char uni='\u0061';
        char zhuan_yi='\n';

4)转义字符

\r 回车
\n 换行
\t 横向跳格,也叫制表符(excel字段间分隔符)
\' 单引号
\" 双引号
\\ 反斜杠
回车等于先按下回车(\r ascii码为10),再按换行(\n ascii码为13)

4、boolean

用于逻辑运算,一般用于程序流程控制。

java的boolean只允许取值true或false。不允许用0或非0表示。

        boolean tmp1=true;
        boolean tmp2=false;
        boolean tmp3=0; //报错

5、int

1)最大值和最小值怎么算

int=4byte=32bit。

第一位为符号位,整数为0,负数为1。

2进制转10进制怎么算。

【1】其最大值为2的31次方-1

int型的32bit位中,第一位是符号为,正数位0。因此,int型能表示的最大的正数的二进制码是

0111 0111 1111 1111 1111 1111 1111 1111.也就是2^31-1。但是这样不好算,我们将其+1变成

1000 0000 0000 0000 0000 0000 0000 0000=2^31再-1 =2^31-1(加1减1值不变)

【2】最小值值为-2的31次方

最小的负数的二进制码是1000 0000 0000 0000 0000 0000 0000 0000

6、float、long

float定义时加f,long定义时加l

五、String

1、地址问题

        String s1="hello"; //开辟一块空间放"hello"
        String s2="hello"; //直接将s2的指针指向"hello"的空间
        String s3=new String("hello"); //新开辟一块空间放"hello"
        System.out.println(s1==s2); //true 地址相同
        System.out.println(s2==s3); //true 地址不同

六、运算符

1、/与%

1)/

【1】在整数做被除数时,0不能做除数,否则报错。

System.out.println(3/0);

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at test.Test.main(Test.java:6)

【2】小数做被除数,整数0结果为Infinity(无限大),因为0是无穷小,尽被除数也很小但相当于除数很大很大。

System.out.println(1.0/0);//Infinity

2)%

【1】为两个整数取余,结果与被取余数符号相同。小数没有意义(但不会报错)

        System.out.println(3%5);   //3
        System.out.println(-3%5);  //-3
        System.out.println(3%(-5)); //3

【2】整数对0取模报错

System.out.println(3%0);
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at test.Test.main(Test.java:6)

【3】小数对0取模,结果为NaN。

NaN=not a number(没有这个数)。因为该结果无穷大,无穷大无法明确显示,所提也就无法明确写出余数,所以显示NaN。

System.out.println(1.0%0);//NaN

 2、异或(^)

不同为异(true),同为flase

        System.out.println(true^false);  //true
        System.out.println(false^true);  //true
        System.out.println(true^true);   //false
        System.out.println(false^false); //false

3、取反

        System.out.println(!true);  //false
        System.out.println(!false); //true

七、标准输入

1、Scanner

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str=sc.next();//读取键盘录入的字符串
        System.out.println(str);
    }
}

2、next()

1)从什么开始读

从非空格的任意字符开始读,next()遇到空格、Tab、会停止向字符串中输入内容(但是仍然可以在控制台继续进行输入,只不过不再把字符输入到字符串中)。回车结束控制台输入。

所以next()不能读入空格、Tab,因为会结束。

运行1)中的代码,在控制台分别输入:

空格

Tab

从非空格和Tab开始输入

\t不影响

2)回车问题

不读入从控制台输入的回车 

3.nextLine

1)从什么开始读

从包括空格的任意字符开始读,只有遇到回车时才结束。所以nextline()可以读空格和从控制台输入的回车。

2)回车问题

当nextLine放在next后面时,因为next不读入从控制台输入的回车,导入nextLine读入从控制台输入的回车,导致nextLine什么也没读就结束输入了。

3.nextLine、next的区别

1)从什么时候开始读

next()从非空格、Tab的任意字符开始读。

nextLine从包括空格的任意字符开始读。

2)停止

next()遇到空格、Tab即停止向字符串输入内容,但扔可以向控制台输入;回车结束从控制台输入。

nextLine()只有遇到回车时才结束。

3)回车

【1】next、nextInt、nextDouble等方法不读入从控制台输入的回车。

【2】nextLine读入从控制机台输入的回车。

【3】出现的问题:

这会导致当nextLine放在next后面时,因为next不读入从控制台输入的回车,所以nextLine读入从控制台输入的回车,使得nextLine什么也没读就结束输入了。

解决方法:在next、nextInt、nextDouble等方法之后加一个nextLine()读入这个回车,之后再加一个nextLine输入正常内容。

        Scanner sc=new Scanner(System.in);
        String next=sc.next();
        String tmp=sc.nextLine();
        String line=sc.nextLine();
        System.out.println(next);
        System.out.println(tmp);
        System.out.println(line);

八、 if条件语句

1、if-else

1)书写格式

if(条件表达式){
  语句体1
}else{
  语句体2
} 

2)执行流程

【1】计算比较表达式的值,看其返回的是true还是false

【2】如果是true,就执行语句体1

【3】如果是false,就执行语句体2

2、if-else if-else

1)书写格式

if(条件表达式1){
  语句体1
}else if(条件表达式2){
  语句体2
}else if(条件表达式3){
  语句体3
}
...
else{
  语句体n+1
}

2)执行流程

【1】首先计算条件表达式,看其返回 的是true还是false

【2】如果是true,就执行语句体1,if表达式结束

【3】如果是false,接着计算条件表达式2,看其是true还是false

【4】如果是true就执行语句体2,if表达式结束

【5】如果是false就计算比较表达式3看其是true还是false

【6】如果是false就执行语句体n+1...

【7】如果全是false就执行else

3、条件表达式

        int i=3;
        int j=4;
        System.out.println(i==j); //false
        System.out.println(i=j);  //4

九、三元运算符

(条件表达式)?表达式1:表达式2;
        int num1=9;
        int num2=10;
        int max=num1>num2?num1:num2;
        System.out.println(max);//10

执行:先判断条件表达式的值,如果是true则执行表达式1,如果是false则执行表达式2

十、循环语句

1、while

1)while

        //1-5累加
        int num=1;
        int res=0;
        while (num<=5){
            res+=num;
            num++;
        }

2)do-while

先计算后判断

        //1-5累加
        int num=1;
        int res=0;

        do{
            res+=num;
            num++;
        }while(num<=5);
        System.out.println(res);

2、for

1)格式

        int res=0;
        for(int i=1;i<=5;i++){
            res+=i;
        }
        System.out.println(res); //15

2)双层for循环

        //打印2次数字
        for(int i=1;i<=3;i++){
            for(int j=1;j<=2;j++){
                System.out.print(i+" ");
            }
            System.out.println();
        }

1 1
2 2
3 3

3、嵌套循环

是值在一个循环语句的循环体重再定义一个循环语句的语法结构,while、do-while、for循环语句都可以进行嵌套,而且他们之间也可以相互嵌套。

总的循环次数=内循环次数*外循环次数

外循环控制的是行数,内循环控制的是列数

4、死循环

        while(true){
            
        }
        for(;;){
            System.out.println("hi");
        }

十一、swich语句

1、格式

switch(表达式){
case 常量1:  
  语句
  break
case 常量2:
  语句
  break
case 常量3:
  语句
  break
default:
  语句
  break
}

常量1、2、3都只能是常量

2、执行流程

计算表达式的值,从第一个匹配的case开始一直往下运行,知道找到break位置。

如果图中遇到default也会正常运行其中的语句。

当表达式不与任何case后面的常量匹配时,会从default语句开始一直向下运行,直到遇到break为止,途中遇到case语句也会正常运行其中的语句。

3、default语句的顺序可以改变,但要注意改变顺序对程序的影响。

4、一个需要注意的问题

        char tmp='a';
        switch (tmp){
            case 97:
                System.out.println(tmp);
            default:
                System.out.println("hi");
        }

a 
hi
        char tmp='a';
        switch (tmp){
            case 97:
                System.out.println(tmp); //同时报错,重复
            case 'a':
                System.out.println(tmp); //同时报错,重复
            default:
                System.out.println("hi");
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值