Java笔记(一):变量 数据类型 字符串 数组 流程控制

前端的内容暂时先告一段落,现在开始对java做基本的了解(好耶)

这将是我第一门开发语言

目前主要按照廖雪峰的java教程进行 当年学python的时候也是看的他的教程呢(还有莫烦)

java简介

java由詹姆斯高斯林开发 介于编译型语言和解释型语言之间

编译型语言:c/c++ 将代码编译为机器码然后执行

解释型语言:python/ruby 解释器加载源码后直接运行 但效率低一些

Java将代码编译为一种字节码 针对不同平台编写虚拟机 因此可以在不同的平台上通过虚拟机运行

从实践上看 JVM的兼容性非常好 因此Java也成为了世界最流行的语言之一

java程序入门

怎么用java写出hello world?

public class Hello {
	public static void main {
		System.out.println("Hello World!");
		}
}

来看一下这段代码

首先 public是java中最常见到的语句 表示该类是公开的 class则是声明一个类 Hello

在类属性中 我们使用public static void来声明一个类方法 这个方法名为main 该方法接受一个参数 类型为String[] 参数名

为args static意思为该方法为静态方法

该方法的内容为 打印语句hello world

在java中,使用public static void main(String[] args)是java程序的固定入口方法 java程序总是从main开始执行

接下来我们分析java程序的结构

/**
 * 可以用来自动创建文档的注释
 */
public class Hello {
    public static void main(String[] args) {
        // 向屏幕输出文本:
        System.out.println("Hello, world!");
        /* 多行注释开始
        注释内容
        注释结束 */
    }
} // class定义结束

类名必须以英文字母开头

一般用大写字母开头

void表示main方法没有返回值

java入口程序规定的方法必须是静态方法

方法一般用小写字母开头

注意 在java中每一行语句必须以分号结束(python程序员落泪)

java注释有多种写法

单行使用//

段落使用/* */

多行使用

/**
*
*
*/

变量 数据类型

python程序员从来不声明变量的类型 但作为优秀的开发语言 java必须关注数据类型

例如

int x = 1;

在语句中声明了x为int型变量 默认值为0

重新赋值时,不需要再声明变量的类型

基本数据类型:

  • 整数类型:byte,short,int,long
  • 浮点数类型:float,double
  • 字符类型:char
  • 布尔类型:boolean

在计算机中,一个字节byte由8个bit组成 即 00000000~11111111 十六进制 00~ff

不同类型的变量 所占用的字节数不同

byte 1
short 2
int 4
long 8
float 4
double 8
char 2

各类型的十进制范围

  • byte:-128 ~ 127
  • short: -32768 ~ 32767
  • int: -2147483648 ~ 2147483647
  • long: -9223372036854775808 ~ 9223372036854775807

在java中 char型变量赋值用单引号 字符串用双引号

上述基本变量之外的变量均为引用类型 如字符串String

引用类型的变量类似于指针 他们存储了某个对象在内存中的位置

使用final来定义变量 该变量则成为一个常量 常量不能被再次赋值

final double PI = 3.14

若类型的名称过长 可以使用var来生成新变量

定义变量时,要遵循作用域最小化原则,尽量将变量定义在尽可能小的作用域,并且,不要重复使用变

量名。变量的作用域是所在代码块的区域,即{}包含的区域

运算符

基本运算符 + - * / %

注意 / 只能得到整数 并且在java中要注意溢出问题

+= -= ++ -- 和python一样

移位运算符 <<1 >>1 分别表示左移 右移一位

使用 >>> 则不会管符号位 直接右移

位运算符 & | ~ ^分别为与 或 非 异或

布尔运算包括比较、与、或、非
比较 > >= < <= == !=
&&
||

三元运算符 x >= 0 ? n : -n

字符和字符串

对于字符串 字符串中有",可以使用转义符\

String s = "abc\"xyz"

两个\表示一个\

字符串可以使用 + 连接

对于int型的变量,可以使用(char)a来将其视作unicode编码转换为字符

int a = 100String s  = "" + (char)a 

数组类型

定义一个数组类型的变量如下

int[] ns = new int[5];
ns[0] =  1;
ns[1] =  2;

使用ns.length即可获取数组大小

可以在数组生成时对元素进行初始化

int[] ns = new int[] {6,45,79,7,56};

或者

int[] ns = {6,45,79,7,56};

注意 数组是一种引用类型 也就是说 无论对数组进行怎样的修改 数组元素本身并没有变化 而是数组每个
位置指向的地址变了

流程控制

输入输出

System.out.print();
System.out.println();

print()是不换行的 println()将会换行

使用printf()可以对输出做格式化

输入则更加复杂

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象
        System.out.print("Input your name: "); // 打印提示
        String name = scanner.nextLine(); // 读取一行输入并获取字符串
        System.out.print("Input your age: "); // 打印提示
        int age = scanner.nextInt(); // 读取一行输入并获取整数
        System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出
    }
}

首先导入 Scanner

生成一个Scanner对象 调用 nextLine 得到输入字符串 调用nextInt得到输入的整数

if语句

if (条件) {
	///
}

java的if写法和js相同

if (条件){
	///	
}else{
	///
}

同理 else if也是可以使用的

在java中 判断值变量的值是否相等 使用== 注意 如果是引用变量

==比较的是他们是否指向同一个对象,而不是对象的内容是否相同

要和python中的==相同 应该使用equals()方法

if s1.equals(s2){
	///
}

注意 Null对象是不能使用equals方法的 必须判断变量是否为null变量

switch语句

和js一样

switch(option){
	case 1:
		///
		break;
	case 2:
		///
		break;
	case 3:
		///
		break;
	default:
		///
		break;
}

default 在option没有任何case匹配时生效

switch在匹配字符串时,比较的是内容相等

while/do while/for

while (条件) {
	///
}
do {
	///	
}while (条件)
for (int i=0;i<100:i++) {
	///
}

在for循环中 若 i 定义在for之外 则在循环结束后仍然可以访问i 否则i是无法被访问的

for each循环用于直接访问数组变量

int[] ns = {1,2,3,4,5,6};
for (int n : ns){
	System.out.print(n);
	}

for each可以遍历所有可迭代对象 包括 list map等等

在循环中 使用break 和continue来控制循环

数组操作

遍历数组 可以使用for for each循环来进行

也可以使用Arrays.toString()来打印数组内容

排序算法常用的有 冒泡 插入 快速排序

冒泡:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
        // 排序前:
        System.out.println(Arrays.toString(ns));
        for (int i = 0; i < ns.length - 1; i++) {
            for (int j = 0; j < ns.length - i - 1; j++) {
                if (ns[j] > ns[j+1]) {
                    // 交换ns[j]和ns[j+1]:
                    int tmp = ns[j];
                    ns[j] = ns[j+1];
                    ns[j+1] = tmp;
                }
            }
        }
        // 排序后:
        System.out.println(Arrays.toString(ns));
    }
}

注意 交换需要借助一个临时变量

调用Arrays.sort()也可以完成排序

对数组排序相当于修改了数组本身

多维数组即数组的数组

public class Main {
    public static void main(String[] args) {
        int[][] ns = {
            { 1, 2, 3, 4 },
            { 5, 6, 7, 8 },
            { 9, 10, 11, 12 }
        };
        System.out.println(ns.length); // 3
    }
}

上面是一个二维数组

遍历二维数组可以用两层循环

public class Main {
    public static void main(String[] args) {
        int[][] ns = {
            { 1, 2, 3, 4 },
            { 5, 6, 7, 8 },
            { 9, 10, 11, 12 }
        };
        for (int[] arr : ns) {
			for (el : arr) {
				System.out.print(el + ',')
			}
		}
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值