Java 语法基础

Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • 类:类是一个模板,它描述一类对象的行为和状态。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

基本语法

编写 Java 程序时,应注意以下几点:

  • 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。

Java 常量
常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;

变量
数据可以在同一类型范围内变化,Java中每个变量必须先声明,后使用。

  • 作用域: 一对{}之间有效。
  • 格式: 数据类型 变量名 = 初始化值 ;
  • 类型: 成员变量和局部变量
    - 在方法体外,类体中声明为成员变量。
    - 在方法体内部声明的变量为局部变量。
  • 变量的作用域和生存期
    变量的作用域:
     作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
    生命周期:
     变量从定义的位置开始就在内存中活了;
     变量到达它所在的作用域的时候就在内存中消失了;

命名规范
- 类名、接口名: 所有单词首字母大写。
- 包名: 所有字母都小写。(. 表示下一层)
- 变量、方法名: helloWorld (首小其大)
- 常量名: 所有字母大写,多单词用"_"连接.

标识符与关键字

1、用来标识类名、变量名、方法名、类型名、数组名及文件名的有效字符序列称为标识符。

  • ①标识符由字母、下划线、美元符号$和数字组成,长度不受限制。
  • ​②标识符的第一个字符不能是数字字符。
  • ③标识符不能是关键字 。
  • ④标识符不能是true、false和null(尽管它们不是Java关键字)。
  • 列如: hello、TigerYear_2010、$98apple.

2、关键字:具有特定用途或被赋予特定意义的一些单词,关键字中所有字母都为小写。

各种数制系统之间的转换。

  • ①二,八,十六进制转换成十进制 (按权相加)
    (1101)'2- - - 1×2³+1×2²+0×2¹+1×2º= (11)'10
  • ②十进制转换成二、八、十六进制
    方法:连续除以进制数,从低到高记录余数.
  • ③二进制与八进制之间的转换
    二进制转八进制: 从右向左,每3位一组(不足左补0)
    八进制转二进制:用3位二进制数代替每一位八进制数。

数据类型

在这里插入图片描述
Java中八大基本数据类型
在这里插入图片描述

1.逻辑类型
常量:true、false。
变量:使用关键字boolean来声明逻辑变量,声明时也可以赋给初值。
boolean male=true,off=false,isTriangle;

2.整数类型
byte型: 1个字节内存占8位,范围:-128~127.
short型: 2个字节内存,范围:-2^15 ~ 2^15 -1.
int型: 4个字节内存, 范围:-2^31 ~ 2^31 -1.
long型: 8个字节占64位,范围:-2^63 ~ 2^63 -1.

3.字符类型
char型:2个字节内存占16位,范围:0~65535.
转义字符常量:\n(换行),\b(退格),\t(水平制表), '(单引号),"(双引号),\(反斜线)等。

4.浮点类型
float型:特别注意的是常量后面必须要有后缀f或F。保留8位有效数字,分配4个字节内存,占32位,取值范围:-2³¹ ~2³¹-1。
double型:分配8个字节内存,占64位。

5.按精度从低到高排列: (类型转换运算)
byte short char int long float double.
1)当低级变量值赋给高级变量时,系统自动完成数据类型的转换。 如:float x=100;
2)当高>低时,必须使用类型转换运算,格式为(类型名)要转换的值。如int x=(int)34.89.

6.int类转换成String类型:
①String.valueOf(i);
②String s=Integer.toString(i);
③ i+"":一个int型的常量+上个空的字符串int+string型就是先把i转换为string,然后跟上后面的string。
7. String类型转int类型
int i = integer.parseInt(s);

引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。
  • 例子:Site site = new Site(“Runoob”)。

类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double

数据类型转换必须满足如下规则:

  • 不能对boolean类型进行类型转换。
  • 不能把对象类型转换成不相关类的对象。
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 转换过程中可能导致溢出或损失精度,例如:
    int i =128;   
    byte b = (byte)i;
    //因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
    
  • 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

    (int)23.7 == 23;
    (int)-45.89f == -45

自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

public class ZiDongLeiZhuan{
        public static void main(String[] args){
            char c1='a';				//定义一个char类型
            int i1 = c1;				//char自动类型转换为int
            System.out.println("char自动类型转换为int后的值等于"+i1);
            char c2 = 'A';			//定义一个char类型
            int i2 = c2+1;			//char 类型和 int 类型计算
            System.out.println("char类型和int计算后的值等于"+i2);
        }
}

强制类型转换

  1. 条件是转换的数据类型必须是兼容的。
  2. 格式:(type)value type是要强制类型转换后的数据类型 实例:
public class QiangZhiZhuanHuan{
    public static void main(String[] args){
        int i1 = 123;
        byte b = (byte)i1;//强制类型转换为byte
        System.out.println("int强制类型转换为byte后的值等于"+b);
    }
}

隐含强制类型转换

  1. 整数的默认类型是 int。
  2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。

输入、输出数据

1.输出基本型数据
System.out.print()用于直接输出,System.out.println()也是直接输出,但在结束的地方会加一个换行
需要特别注意的是,在使用System.out. println() 或System.out.print()输出字符串常量时,不可以出现“回车”。输出字符串较长,可以分解成几部分,然后使用并置符号+将它们首尾相接。

public class Main{
    public static void main(String[] args){
        System.out.println("hello_1!");
        System.out.print("hello_2!");
        System.out.print("hello!_3");
    }
}

2.输入基本型数据(Scanner)
如果你要进行输入,请一定加上两个包

import java.util.*;
import java.io.*;

请看下面例子用于输入单个字符

import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args)throws IOException{
        Scanner sc=new Scanner(System.in);
         
        int a=sc.nextInt();				//输入一个整数
        System.out.println(a);
         
        double b=sc.nextDouble();		//输入一个双精度的浮点数
        System.out.println(b);
         
        String str=sc.next();			//输入一个单词,遇到分号则输入终止
        System.out.println(str);
         
        String str2=sc.nextLine();		//输入一行,中间可有多个空格
        System.out.println(str2);

		String str3=sc.readLine();
        int a=Integer.parseInt(str2);		//将str2转换为int,并复制给a
        System.out.println(a);
         
        String str4=sc.readLine();
        double b=Double.parseDouble(str3);	//将str3转换为double,并复制给b
        System.out.println(b);
    }
}

3.格式控制

  • 由格式控制符号%d、%c、%f、%s和普通的字符组成,普通的字符原样输出,格式符号用来输出表达式的值。
    %d:输出int类型数据。
    %c:输出char型数据。
    %f:输出浮点型数据,小数部分最多保留6位。
    %s:输出字符串数据。
  • 输出数据时也可以控制数据在命令行的位置
    %md:输出的int型数据占m列。
    %0md:输出的int型数据占m列,不足在前补0.
    %m.nf:输出浮点型总占m列,小数点保留n位。
    如: System.out.printf("%d, %f",12,23.78) ;

4.随机数输出

Random ran=new Random();
ran.nextInt(n)-1; (n):随机输出(0~n);

数组

1. 声明数组包括数组变量的名字(简称数组名)、数组的类型。
声明数组有下列两种格式:

数组的元素类型 数组名[];
数组的元素类型 [] 数组名; (常用)

Java不允许在声明数组中的方括号内指定数组元素的个数。否则将导致语法错误。
如: int a[12]; 或 int [12] a; (错)

2)为数组分配元素
声明数组仅仅是给出了数组变量的名字和元素的数据类型,还需为数组分配元素,

格式:数组名 = new 数组类型 [数组个数];
例如: boy = new float[4] ;
声明数组和创建数组可以一起完成。
float boy[] = new float[4];
在声明后必须用new运算符为数组分配元素.

3)length的使用
数组的元素的个数称作数组的长度。对于一维数组,“数组名.length"的值就是数组中元素的个数;对于二维数组,“数组名.length"的值是它含有的一维数组的个数。 例如,对于

float a[] = new float[12];
int b[] []= new int[3] [6];
a.length的值12。而b.length的值是3。

数组的四个基本特点

  • 其长度是确定的。数组一旦被创建,它的大小就是不能改变的。
  • 其中的元素必须是相同类型,不允许出现混合类型。
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
  • 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身即是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

数组的创建实例

package com.kikikikikiku.array;
public class ArrayDemo01 {
    public static void main(String[] args) {
        int sum=0;
        //1.声明一个数组
        int[] nums;
        //2.创建一个数组
        nums = new int[10];		//这里面可以放10个int类型的数字
        System.out.println("数组为:");
        //3.给数组元素赋值
        for (int i = 0; i <nums.length; i++) {
            nums[i]=i+1;
            sum += nums[i];
            System.out.print(nums[i]+" ");
            if (i==nums.length-1){
                System.out.println();
            }
        }
        //计算所有元素的和
        System.out.println("所有元素的和为:"+sum);
    }
}

内存分析

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值