JAVASE前三章

目录

一、JAVA概述

1.Java发展史

2.Java语言的特点

  3.Java语言体系结构

4.Java语言的运行机制

 5.第一个程序HelloWorld

 二、基础语法

1.IDE的使用

2.注释

3.关键字

​4.保留字 

5.标识符

        1.标识符

        2.定义合法标识符规则

        3.java中的名称命名规范

6.java变量

7.java基本数据类型

   1.整数类型

2.进制

3.浮点类型

 4.逻辑型boolean(布尔)

5.字符型char

6.ASCII码

7.Unicode编码

8.基本数据类型转换

9、运算符

10、控制台输入

11、控制语句

12、Java中的方法

13、return表达式

三、数组

1、数组的基本概念及作用

2、数组的创建

3、数组的访问与迭代

4、数组排序

5、二维数组


一、JAVA概述

1.Java发展史

        在1991年时候,James Gosling(詹姆斯•高斯林)所在sun公司的工程师小组, 需要设计一种小型计算机语言,该语言主要用于像电视机顶盒,家用电器等这样的消 费类电子产品,这些电子产品有一个共同的特点:计算处理能力和内存都非常有限, 所以要求:语言必须非常小且能够生成非常紧凑的代码,这样才能在这样的环境中执 行,另外,由于不同的厂商选择不同的CPU,因此,要求该语言不能和特定的体系结 构绑在一起,要求语言本身是中立的,也就是在不同的平台上运行(即跨平台)。 所以在sun公司内部成立了一个Green项目组,该小组的领导人是James Gosl ing。他们开发出了一种语言,起初把它命名为Oak(橡树的意思,Gosling注意到自 己办公室外一棵茂密的橡树Oak,这是一种在硅谷很常见的树。所以他将这个新语 言命名为Oak。但Oak是另外一个注册公司的名字。这个名字不可能再用了),后来 将名字改为java,Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。JAVA 的标识也正是一杯正冒着热气的咖啡。经过多年的开发,最终于1995年正式确立。

2.Java语言的特点

● 开源

● 简单、高效

● 面向对象

● 平台无关性(跨平台):对于java程序,只需要开发一次,就可以在不同的平台(操作系统)上运行

                                           通过虚拟机,将java程序指令翻译给不同的操作系统,前提是不同的平台上安装不同的java虚拟机,担任运行java程序的一个环境

● 交互式特性

● 多线程机制

● 动态的内存管理机制

● 安全性

        JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算 设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模 拟各种计算机功能来实现的,因为有了不同的JVM,所以同一个Java程序在 三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性,也 称为Java具有良好的可移植性, 但是前提是要具有不同的jvm。

        Java语言与平台无关,JVM与平台相关。

  3.Java语言体系结构

        ● JavaSE,:Java Standard Edition(标准版) JavaSE 包含那些构成 Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网 络编程。

        ● JavaEE :Java Enterprise Edition(企业版) JavaEE 包含JavaSE 中的类,并且还包含用于开发企业级应用的类。比如:servlet、 JSP、服务器。

        ● JavaME :Java Micro Edition(微缩版) JavaME 包含JavaSE中一 部分类,用于消费类电子产品的软件开发。比如:呼机、智能卡、 手机、PDA、机顶盒。

        简单讲就是:

        ● JavaSE:java Standard Edition (Java标准版),包含java基础核心的类:字符串、日期、集合、异常、IO、线程、GUI、网络编程

        ● JavaEE:java Enterprise Edition( Java企业版),包含javaSE、servlet(server applet)、jsp

        ● JavaME:java Micro Edition (Java微缩版)(已被安卓开发取代)

4.Java语言的运行机制

        • Java虚拟机可以理解成一个翻译器。

        • 对于不同的运行平台,有不同的虚拟机。

        • Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次 编译,随处运行” 。

        创建.java文件(源代码)--->编辑器--->.class文件(字节码)--->不同平台的JVM--->翻译--->指令--->平台运行

jdk、jre、jvm之间的关系:

 5.第一个程序HelloWorld

在F盘新建一个.txt文件,重命名为Hello.java,用NotePad++打开,编辑下列程序

//定义一个类,名为Hello
public class Hello{
    //定义主方法
    public static void main(String[] args){
       System.out.println("Hello World!");     //程序代码部分
    }
}

打开cmd命令提示符,输入F:,进入F盘,输入javac Hello.class(编译成class文件),再输入java Hello(运行class文件),就会打印出Hello Word;  

 二、基础语法

1.IDE的使用

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

        常用的java开发工具有 IntelliJ IDEA、 Eclipse 。

2.注释

        对程序功能的说明,以某种特定符号作为标记,程序在运行过程中不会执行注释.

        Java语言有三种注释方式:

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

                /*   

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

                 */

                /**

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

                 */

/**
 * 注释的演示
 */
public class Demo1 {


    public static void main(String[] args) {

         //年龄
         int age;

         /*
           姓名
           注意不能为空
          */
         String name;

        Demo1.eat("jim");

        System.out.println();
}

    /**
     吃饭的方法
     name:姓名
     */
    public static void eat(String name){

    }

}

3.关键字

       定义:被Java语言赋予了特殊含义,用做专门用途的字

       特点:关键字中所有字母都为小写

4.保留字 

         现有Java版本尚未使用,但以后版本可能会作为关 键字使用。自己命名标记符时要避免使用这些保留字 goto 、cons。

5.标识符

        1.标识符

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

        2.定义合法标识符规则

                由26个英文字母大小写,0-9 ,_或 $ 组成。

                数字不可以开头。

                不可以使用关键字和保留字,但能包含关键字和保留字。

                Java中严格区分大小写,长度无限制。

                标识符不能包含空格。

        注意:在起名字时,为了提高阅读性,要尽量有意义, “见名知意”。

        3.java中的名称命名规范

                包名:多单词组成时所有字母都小写:xxxyyyzzz

                类名、接口名:多单词组成时,所有单词的首字母大写: XxxYyyZzz

                变量名、方法名:多单词组成时,第一个单词首字母小写,第二 个单词开始每个单词首字母大写:xxxYyyZzz

                常量名:所有字母都大写。多单词时每个单词用下划线连接: XXX_YYY_ZZZ

6.java变量

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

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

• 其要素包括变量名,变量类型。

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

                        [修饰符] type varName [=value][,varName[=value]……];

例如:
int i = 100;
int i1, i2, i3 = 10;
String s = “hell

7.java基本数据类型

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

   1.整数类型

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

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

         如: int i1 = 600;    //正确

                 long l1 = 8888888888L;    //必须加l或L否则会出错 

2.进制

对于整数,有四种表示方式:

        二进制:0,1 ,满2进1.以0b或0B开头。

        八进制:0-7 ,满8进1. 以数字0开头表示。        

        十进制:0-9 ,满10进1。

        十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。 如:0x21AF +1= 0X21B0

0123456789101112131415
0123456789ABCDEF

3.浮点类型

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

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

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

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

Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F , 如:double d = 12345.6; //正确 float f = 12.3f; //必须加f否则会出错

 4.逻辑型boolean(布尔)

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

        boolean 类型数据只允许取值 true 或 false 。

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

//逻辑控制语句
boolean flag;
flag = true;
if(flag) {
//do something
}

5.字符型char

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

        char占2字节。

        用单引号括起来,例如: char c1 = 'a'; char c2 = '中';

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

char运算: char类型是可以运算的因为char在字符编码表中有对应的数值。 在JAVA中,对char类型字符运行时,直接当做对应编码表的整数来 对待。 char c= ‘a’+1; 先将’a’提升为int,计算结果98,对应的 字符是b。

/*
字符型
 */
public class Demo4 {

    public static void main(String[] args) {

         char c = 'a';//97-->二进制
         char d = '中'; //20013 0xffdda存储    utf-8就是在网页,文件中显示时对照表

        //在运算时,char会转为int(在编码表中的十进制编号)
        System.out.println(d+0);
        System.out.println(d<10);

         /*
           计算机是不能识别字符的?
           编码表
           a--97
           b--98
          */
    }
}

6.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。

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

7.Unicode编码

        Unicode:一种编码,将世界上所有的符号都纳入其中。这个编号范围从 0x000000 到 0x10FFFF (十六进制),有 110 多万,每个字符都有一个唯一的Unicode 编号,这个编号一般写成 16 进制,在前面加上 U+。例如:“马”的 Unicode 是U+9A6C。

        Java底层采用unicode编码来存储字符。

        随着互联网的兴起,计算机与网络,计算机与计算机之间的通讯急需一种统一的编码方式来编译和解释 Unicode编码。

        这种编码方式就是我们现在使用最广泛的 UTF-8,所以,UTF-8 是 Unicode 编码的一种具体实现,它规定了字符转换到二进制编码的一系列规则。

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

8.基本数据类型转换

        java中可以从任意基本类型转型到另外的基本类型, boolean 类型不可以转换为其他的数据类型。

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

  默认转换:

        整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为: byte,short,char->int->long->float->double byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型

强制转换:

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

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

public class Demo5 {

    public static void main(String[] args) {        
          byte b=127;
          int c= 2147483647;
          long d = c;
          float f = d;
          int x = 258;
          byte y = (byte)x;
        System.out.println(y);
          float m = 10.5F;
          long n = (long)m;
        System.out.println(n);

    }

}

9、运算符

a、算术运算符

+  -  *  /  ++  --  %
 - * / %  只能进行字符运算
    +:   加法
         字符串连接:数值    +(连接)   字符串 =  字符串
         字符串  +(连接)   字符串  = 字符串
++ :每++一次,在原来的基础上+1,再赋值
    单独使用时,++在前在后没有区别,在混合运算时,++在前先自增后运算,++在后先运算后自增

b、比较运算符

==  !=  > <  >= <=  
== !=  可用于数值,Boolean,引用类型

c、逻辑运算符

&  |  ! ^ && ||
&  |  !  ^   可以参与逻辑运算,也可以参与位运算
&&:短路与 遇到第一个false时,就发生短路,后面的表达式就不执行了
&:按位与  遇到第一个false时,不发生短路,后面的表达式继续执行
||:短路或  遇到第一个true时,就发生短路,后面的表达式就不执行了
|:按位或  遇到第一个true时,不发生短路,后面的表达式继续执行

d、赋值运算符

== +=  -=  *=  /=  %= 
=:当"="两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则
    混合运算时,数据类型会默认转为表达式中最大的类型

e、条件运算符

(条件表达式)?表达式1:表达式2 //必须返回一个结果,结果的类型与定义结果的类型一致
  int a = 10;
  int b = 5;
  int max = (a>b)?a:b;

f、位运算符

二进制bit位的运算

<<(相当于*2)空位补0;被移出的高位丢弃,空缺位补0
>>(相当于/2)被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1
>>>(无符号右移)被移位二进制最高位无论是0还是1,空缺位都补0
&(按位与)二进制进行&运算,只有1&1时,结果是1,否则是0
(按位或)二进制进行或运算,只有0或0时,结果是0,否则为1
^(按位异或)相同为0,不同为1
~(按位取反)

分隔符>一元运算符>算数运算符/移位运算符>关系运算符>逻辑运算符>三目运算符>赋值运算符

10、控制台输入

使用标准输入串System.in使用Scanner取得一个字符串或一组数字在新增一个Scanner对象是需要一个System.in对象,仅在JavaSE中测试程序时输入使用Scanner的next()方法用以取得用户输入的字符串;nextInt()将取得的输入字符转换为整数类型;在使用Scanner对象时,需要在文件头带入java.util.Scanner;写法为:import java.util.Scanner;

        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        float b = scanner.nextFloat();
        double c = scanner.nextDouble();

11、控制语句

a、if语句

不建议if else 语句块省略{ }, 省略后,if else 只对紧跟着的那行代码有效

if
if(条件){语句块1}else{语句块2}
if(条件1){语句1}else if(条件2){语句2}..else if(条件N){语句N;}

b、switch:多路选择

表达式值类型:byte,short,int,char,枚举,JDK 7 以后可以使用String类型 选项值1,2,3类型需要和表达式的类型一致, 值1,2,3 必须是字面量(常量)

值1,2,3 值不能重复

匹配的case语句执行完成后,如果没有break结束,则继续向下执行下一个case,直到遇到break,如果没有与表达式匹配的选项,则执行default语句,没有default则结束switch

switch(表达式){
       switch(表达式){
        case 值1 : 代码块; [break];
        case 值2 : 代码块; [break];
        case 值n : 代码块; [break];
        default: 默认代码块;
    }
}
break 语句:用于终止某个语句块的执行,用在循环体中,可以强行退出循环,只能终止一层
continue:只是终止当次循环,之后进入到下一次循环
结束外层循环(在内层循环,结束外层循环)
    outer:for(int i = 0;i < 4;i++){
        for(int j = 0;j < 5;j++){
            if(j==3){
                break outer;
            }
            System.out.print("*");
        }
        System.out.print();
    }

多路分支选择,switch可以实现的,if都可以实现,if条件更灵活,switch适用于一些固定选项的选择,在固定选项执行中,效率高

c、循环

满足某种条件,一直重复做某种事情

循环语法格式:循环变量初始化

进入循环的条件

循环体(循环中要执行的代码)

循环变量的更新

循环的方式:while do while for

while先条件判断,不成立不能进入到循环体中
while(进入循环的条件){
    循环体
}
do{}while{};
先执行,后判断,即使条件不成立,也至少执行一次
for循环
for(变量初始化1;条件2;更新变量4){
    循环体3;
}

12、Java中的方法

类似于C语言中的函数,解决某一个问题,而编写的代码组合,属于类或对象

main方法是java程序的主入口,启动java主线程

语法格式:
    [访问权限修饰符(public) 修饰符 返回值类型(int void表示方法没有返回值)]
    static修饰方法属于类,可以直接通过类名调用,不加static修饰,方法属于对象,需要通过对象调用
    如果方法有返回值,必须声明返回值的类型;注意定义的返回值的类型与实际返回值的类型要匹配
package day;
public class Run{
    public static void main(String[] args){
        Run.multi();
        Run m = new Run();
        m.test();
    }
    public void test(){
        int a = 10;
        int b = 10;
        if(a>b){
            System.out.println("a>b");
            return;
        }
    }
    public void multi(){
         for (int i = 1; i <=9 ; i++) {
             for (int j = 1; j <= i ; j++) {
                 System.out.print(j+"*"+i+"="+(i*j)+" ");
             }
             System.out.println();
         }
     }
    
}

13、return表达式

return 表达式;//将表达式的值返回
return;// 后面没有值的时候,只表示方法终止,不表示方法没有返回值

三、数组

1、数组的基本概念及作用

数组:数组是相同数据类型的集合,也就是说存储一组数据类型相同的数

数组是引用类型数据,即对象

可以存储基本类型数据,也可以存储引用类型数据

特点:在内存中的空间是连续的

声明数组:int 表示数组中存储的数据类型

int [] a;(建议)

int a [];

int [] a,b;
int x [];

2、数组的创建

方式1:

创建数组时,必须为其指定长度,而且长度一旦定义了,就不能改变了

new int[10];在内存空间中创建了一个长度为10的数组对象

int [] a = new int[10];
//System.out.println(a); [I@1b6d3586 这个是输出对象时,默认输出的是对象在内存中的地址.
        System.out.println(Arrays.toString(a));// Arrays类中提供一个toString() 以字符串形式输出数组中的内容
        //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
​
        float[] f = new float[10];
        System.out.println(Arrays.toString(f));//[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
​
        char [] chars = new char[10];
        System.out.println(Arrays.toString(chars));//[ ,  ,  ,  ,  ,  ,  ,  ,  ,  ]
​
        boolean [] b = new boolean[10];
        System.out.println(Arrays.toString(b));//[false, false, false, false, false, false, false, false, false, false]
​
        String[] s = new String[10];
        System.out.println(Arrays.toString(s));//[null, null, null, null, null, null, null, null, null, null]

方式2:创建数组的同时,为数组每个空间赋值,同时确定了数组的长度

int [] c = new int []{2,5,1,3,4};
System.out.println(Arrays.toString(c));

方式3:隐式创建

int [] y = {2,5,1,3,4};
System.out.println(Arrays.toString(y));

3、数组的访问与迭代

数组索引:就是每一个空间的标号

整数,最小为0,最大是长度为-1

        int[] a = new int[10];
               a[0] = 1; //为数组指定空间位置赋值
               a[1] = 2;
        System.out.println(Arrays.toString(a));
​
        int[] b = {1,2,3,4,5};
              //   0 1 2 3 4
        System.out.println(b[2]);//获得数组指定位置的值
​
        //System.out.println(b[10]); 访问数组非法索引
        /*
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
                at day1.ArrayDemo2.main(ArrayDemo2.java:26)
         */

数组元素的遍历,使用循环生成数组索引,获取每一个位置的值

 int[] a = {1,2,3,3,45,8,5,6};
         System.out.println(a.length); //length属性获取到数字长度
         for (int i = 0; i <a.length ; i++) {
             if(a[i]==8){
                 System.out.println("包含8");
                 break;
             }
        }
 增强for循环
 int i 每次循环声明一个变量
 a是要遍历的数组
 每循环一次,从数组中挨个取出一个元素,赋值给t;
    for(声明一个变量,用来接收每次从数组中取出的元素:需要遍历的数组){
        每循环一次,从数组中取出一个元素,赋给定义的变量,直到没有元素了
    }
int [] a = {2,3,1,4,5};
for(int t : a){
           if(t==8){
               System.out.println("包含8");
           }
        }

4、数组排序

 a、冒泡排序

​        每次拿出相邻的两个数,满足条件交换位置


int [] a = {4,5,2,3,1};
//外层循环,控制循环的次数
for(int i = 0;i<a.length-1;i++){
    //内层循环,控制比较的次数
    for(j = 0;j < a.length-1-i;i++){
        if(a[j]>a[j+1]){
            int temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
        }
    }
}
System.out.println(Arrays.toString(a));


 

 b、选择排序

​    从第一个元素开始与后面的每个元素比较,满足条件交换位置

int [] a = {4,3,5,2,1};
//外层循环,取出数组的每个元素
for(int i = 0;i < a.length-1;i++){
    //内层循环,取出每次与i比较的元素
    for(j = i+1;j < a.length;j++){
        if(a[i]>a[j]){
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    }
}
System.out.println(Arrays.toString(a));

5、二维数组

二维数组的每一个元素都是一维数组

声明: int [][] a;
      int a [][];
创建: int [][] a = {{1,2},{3,4}};
      int [][] b = new int [3][4]; //二维数组中有3个一维数组,一维数组的长度是4
      int [][] c = new int [][]{{},{}};

遍历二维数组

int [][] a = {{1,2,3},{4,5,6},{7,8,9}};
//首先,遍历二维数组,从二维数组中取出每一个一维数组
for(int i = 0;i < a.length;a++){
    //再对每个一维数组进行遍历
    for(int j = 0;j < a[i].length;j++){
        System.out.print(a[i][j]+"");
    }
    System.out.println();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值