大数据开发之路---Java基础(一)

因为最近工作用到java,所以了解一些java的知识,当然这篇文章也是适用于有语言基础的,因为是用于快速熟悉java的一些语法规范,并没有整理细节的内容,零基础的不适合看这篇文章

Hello world

老规矩先来hello world代码:

package study_java.ex01;

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

注释

// 表示单行注释
/* */ 表示多行注释

Java语言的关键字

Java关键字的特点:
组成关键字的字母全是小写
常碰到的关键字有:

标识符要求(变量)

  • 不能数字开头
  • 不可以使用关键字
  • 严格区分大小写

Java中的名称规范:

  • 包含多词组组成时,都小写
  • 类名接口名,多个单词组成时,使用大驼峰方式
  • 变量名和函数名:多个单词组成时,小驼峰法
  • 常量名:所有的字母都大写,多单词时每个单词用下划线连接

常量

不能改变的数值

整数常量
小数常量
布尔型常量
字符串常量
null常量

变量

数据类型 变量名 = 初始化值

变量的作用范围,就是它所在的{}内部

自动类型转换也叫隐式类型转换
强制类型转换也叫显式类型转换

package study_java.ex01;

public class TypeConvert {
    public static void main(String[] args){
        byte b = 100;
        int i = b;   // 这里就是进行了隐式转换

        byte b2 = (byte)i;   // 这里是显式转换
        System.out.println(b2);
    }
}

表达式的数据类型自动提升:
byte short char 提升到int

    byte b3 = 3;
    int x = 4;
    x = x + b3;     // b3会自动提升为int类型进行运算
    System.out.println(x);

运算符

算术运算符

赋值运算

= += -= *= /= %=

比较运算符

逻辑运算符

位运算符

关于三元运算
实例代码:

package study_java.ex01;

public class IfDemo {
    public static void main(String[] args){
        int age = 100;
        if(age <= 50){
            System.out.println("小");
        }
        else{
            System.out.println("大");
        }

        // 更改为三元运算
        String str = age <= 50 ? "小":"大";
        System.out.println(str);

    }
}

流程控制

判断结构

选择结构

switch语句特点:
switch 语句只有四种类型的表达式:byte short int char

case 之间与default没有顺序,先执行第一个case,没有匹配的case执行default
结束switch语句有两种情况:遇到break, 执行到switch语句结束

如果匹配的case或者default没有对应的break,那么程序会继续向下执行,直到遇到break或者switch结束

代码例子:

package study_java.ex01;

public class SwitchDemo {
    public static void main(String[] args){
        char x = 1;
        switch(x){
            case 1:
                System.out.println("x=1");
                break;
            case 2:
                System.out.println("x=2");
                break;
            case 3:
                System.out.println("x=3");
                break;
            default:
                System.out.println("x=?");
                break;

        }
    }
}

循环结构

while循环

代码例子:

package study_java.ex01;

public class WhileDemo {
    public static void main(String[] args){
        int i = 0;
        while (i <= 10) {
            System.out.println(i);
            i++;
        }
    }
}

代码例子2:

package study_java.ex01;

public class WhileDemo2 {
    public static void main(String[] args){
        int i = 1;
        int sum =0;
        while (i <= 100){
            sum += i;
            i += 1;

        }
        System.out.println(sum);
    }
}

do while 循环

代码例子:

package study_java.ex01;

public class DoWhileDemo {
    public static void main(String[] args){
        int i = 1;
        do {
            System.out.println(i);
        }while (i > 10);
    }
}

for循环

代码例子:

package study_java.ex01;

public class ForDemo {
    public static void main(String[] args){
        for(int i = 0;i<10;i++){
            System.out.println(i);
        }
    }
}

打印一个九九乘法表:

package study_java.ex01;

public class ForDemo3 {
    public static void main(String[] args){
        for(int i = 1;i < 10;i++){
            for (int j = 1;j <= i;j++){
                System.out.print(j + "*" + i + "=" + i*j + "\t");
            }
            System.out.println();
        }

        System.out.println();

        for (int i = 9; i>0;i--){
            for (int j = 1;j<=i;j++ ){
                System.out.print(j + "*" + i + "=" + i*j + "\t");
            }
            System.out.println();
        }
    }
}

打印一个实心和空心的三角形

package study_java.ex01;

public class ForDemo4 {
    public static void main(String[] args){

        for(int i=1;i <= 5;i++){
            for(int j = 1; j<=9;j++){
                if (j <= 5-i){
                    System.out.print(" ");
                }
                else if (9-j < 5-i){
                    System.out.print(" ");
                }
                else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }

        System.out.println();

        for(int i = 1;i<= 5;i++){
            for(int j = 1;j<=9;j++){
                if (i == 5){
                    System.out.print("*");
                }
                else if (j == 5-i+1){
                    System.out.print("*");
                }
                else if ( 9-j == 5-i){
                    System.out.print("*");
                }
                else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

函数

函数就是定义在类中的具有特定功能的一段独立小程序
函数也称为方法

修饰符 返回值类型 函数名称(参数类型 参数名称,...) {
执行语句;
return 返回值;
}

函数特点:

封装功能
重用
调用时才会被执行
对于函数没有具体的返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写

注意:
函数中只能定义调用函数,不可以在函数内部定义函数
定义函数时,函数的结果应该返回给调用者,交给调用者处理

一个简单的函数例子:

package study_java.ex01;

public class FunctionDemo1 {

    public static void main(String[] args){
        int res = add(10,20);
        System.out.println(res);
    }

    public static int add(int a, int b){
        return a + b;
    }
}

函数递归:

通过阶乘的两种写法来理解,其实就是自己调用自己:

public static int fabric(int n) {
    int res = 1;
    for (int i=1;i<=n;i++){
        res *= i;
    }
    return res;
}

public static int fabric2(int n) {
    if (n == 1) {
        return 1;
    }
    else {
        return n * fabric2(n-1);
    }

}

函数重载

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可

重载的特点:
与返回值类型无关,只看参数列表
例子代码:

package study_java.ex01;

public class FunctionDemo2 {
    public static void main(String[] args){
        add(10,3,2);
    }
    // add
    public static int add(int a, int b){
        return a+b;
    }

    // 重载add
    public static int add(int a, int b, int c){
        return a + b + c;
    }
    // 重载add
    public static float add(int a, float b) {
        return a + b;
    }

    // 重载add
    public static float add(float a, int b) {
        return a + b;
    }

}

函数的可变参数:

public static int multiply(int... xyz){
    int sum = 0;
    for (int i =0;i <xyz.length;i++){
        System.out.println(i);
        sum += i;
    }
    System.out.println(sum);
    return sum;
}

数组

同一种类型数据的集合,其实就是一个容器
可以自动给数组中的元素从0开始编号,方便操作这些元素

元素类型[] 数组名 = new 元素类型[元素个数或者数组长度]
例子 int [] arr = new int[5]
或者:

元素类型[] 数组名 = new 元素类型[元素,元素,....]
int [] arr = new [1,2,3,4]

数组这里的一些练习题,通过一些排序来熟悉:
冒泡排序,以及选择排序

package study_java.ex01;

public class BubbleDemo1 {
    public static void main(String[] args) {
        int[] arr = {1,4,90,22,12,20,99};
        select(arr);
        for (int i =0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

    public static void bubble(int[] arr){
        int tmp = 0;
        for (int i= 0; i< arr.length -1;i++){
            for (int j=0;j<arr.length -1 - i;j++){
                tmp = arr[j];
                if (arr[j] > arr[j+1]){
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }

    public static void bubble2(int[] arr){
        int tmp =0;
        for (int i = 0; i < arr.length-1;i++){
            for (int j=0;j<arr.length-1-i;j++){
                tmp = arr[j];
                if (arr[j] < arr[j+1]){
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }

    public static void select(int[] arr){
        int tmp = 0;
        for(int i = 0;i < arr.length-1;i++){
            int min_loc = i;
            for (int j=i+1;j<arr.length;j++){
                if (arr[j] < arr[min_loc]){
                    min_loc = j;
                }
            }
            tmp = arr[i];
            arr[i] = arr[min_loc];
            arr[min_loc] = tmp;
        }
    }
}

原文地址:https://www.cnblogs.com/zhaof/p/9248913.html

时间: 2024-08-29 23:41:24

大数据开发之路---Java基础(一)的相关文章

【大数据-第二期】java基础第三天作业

定义一个函数,函数功能是动态提取int[]中元素的最大值.     public static void main(String[] args){                  System.out.println(getMax(new int[0]));         int[] arr = new int[]{3,2,11,5};         System.out.println("Arr最大值为:" + getMax(arr));     }     public st

【大数据-第二期】java基础第六天作业

[作业1] ------------------------------------ 使用抽象类和接口实现适配器模式设计.涉及的类和接口分别为ButtonListener(接口), 其中含有click() / dbclick() / keyUp() / keyDown()等方法. ButtonAdapter(按钮适配器类),适配器中对非click()方法进行默认实现. Button类中添加addListener(ButtonListener l)方法. //按钮监听接口 interface Bu

【大数据-第二期】java基础第四天作业

1.将按位运算操作,尤其是左移和右移(有无符号)整理到自己的博客中. 重点说明清晰负数的运算过程. public static void main(String[] args) {     //运算符演示          int a = 3;     int b = 6;          //+ - 符号     System.out.println("+a = " + (+a));                //3     System.out.println("-

【大数据-第二期】java基础第五天作业

1.文字阐述静态代码块的作用.静态代码块在类加载时默认会执行一次,并且只执行一次. 2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么? 构造代码块优先于构造函数的调用.和方法声明的位置无关,因为构造代码块在每次创建对象时默认会调 用一次.构造代码块的作用是,初始化成员变量. 3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?一定会加载静态代码块.手动控制类加载使用Class.forName("classname"),默认加载类时

java开发转行大数据开发的学习路径

从Java开发通过大概3个月的学习转到大数据开发,主要分享一下学习路径: 第一阶段: 01.Linux学习(跟鸟哥学就ok了) 02.Java 高级学习(<深入理解Java虚拟机>.<Java高并发实战>) 第二阶段: 03.Hadoop (董西成的书) 04.HBase(<HBase权威指南>) 05.Hive(<Hive开发指南>) 06.Scala(<快学Scala>) 07.Spark (<Spark 快速大数据分析>) 08

学习大数据为什么先学Java?

学习大数据是否必须会java? 很多零基础学员想学大数据都知道,学大数据部分课程之前要先学习一种计算机编程语言.大数据开发需要编程语言的基础,因为大数据的开发基于一些常用的高级语言,比如Java和.Net.不论是hadoop,还是数据挖掘,都需要有高级编程语言的基础. 因此,如果想学习大数据开发,还是需要至少精通一门高级语言. 常用计算机编程语言 计算机编程语言有很多,目前用的多一点的就是Java,c++,R,python等等.目前大多数学习大数据的人都是选择学习Java,很多培训机构针对零基础

大数据学习:hive篇,入门学习大数据开发

大数据开发之路漫漫其修远兮,吾将上下而求索.对于很多入门学习大数据开发的小伙伴,可能第一个接触到的,是我们的大数据领域的数据仓库工具hive.在大数据生态中,hive一般作为数据仓库来使用. Hive本身是不做数据存储的,它是构建在分布式存储系统HDFS之上,我们平常看到的表数据其实本质上来说还是HDFS的文件. Hive把这些HDFS数据文件,通过元数据规则映射为数据库的表,并且可以提供SQL操作的功能.Hive总体结构比较简单,总体有三个组件:用户接口.元数据系统.驱动器.用户通过用户接口来

我的全栈之路-Java基础之数据存储

我的全栈之路-Java基础之数据存储 我的全栈之路 2.1 标识符 标识符是在程序开发时给包,类.接口.注解,变量,方法命名的字符序列. 标识符在命名时需要遵守相关的规则和规范: 标识符的命名规则: 标识符不能是Java的关键字和保留字,关键字是Java中被赋予赋予特殊含义的单词,例如public static void等等.保留字是现有Java版本尚未使用,但是未来的Java版本可能会做关键字使用的单词,例如goto,const.但是可以包含关键字,保留字. 标识符可以由字母.数字.下划线组成

秦皇岛达内:零基础小白如何成为大数据开发大牛

目前最火的大数据,很多人想往大数据方向发展,想问该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高.如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么IT培训网小编就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?是计算机专业,对操作系统.硬件.网络.服务器感兴趣?是软件专业,对软件开发.编程.写代码感兴趣?还是数学.统计学专业,对数据和数字特别感兴趣. 其实这就是想告诉你的大数据的三个发展方向,平台搭建/优化/运维/监控.大数据开发/ 设计/ 架构.数据