Java基础一

Java基础一

注释

  • 单行注释

    //这是单行注释
    
  • 多行注释

    /*
    这是多行注释
    注意:多行注释可以嵌套单行注释,但不能嵌套多行注释与文档注释
    */
    
  • 文档注释

    /**
    这是文档注释
    一般用在类、方法和变量上,用来描述其作用。
    注释后,鼠标放在类和变量上会自动显示出我们注释的内容。
    注意:文档注释能嵌套单行注释,但不能嵌套多行注释和文档注释。
    补充:文档注释可以通过javadoc命令把注释中的内容生成HTML文档
    */
    

标识符

  • 作用:为方法、变量、常量、类和类的对象等命名

  • 构成规则

    • 0—9,A—Z和a—z,$,_
    • 首位不能是数字,区分大小写,不能使用关键字作为标识符
  • 命名约定

    • 类和接口名:每个单词的首字母大写。如HelloWorld
    • 方法名:首字母小写,其余首字母大写,少用下划线。如myName(驼峰命名法)
    • 常量名:全部大写,单词之间用下划线分隔。如SIZE_NAME
    • 变量名:首字母小写,其余单词首字母大写,应指示变量的用途,临时变量可用单个字符,少用_与$
    • 包package命名全小写
  • 注意String是一个类名,即字符串类,其对象就是字符串。不属于关键字

关键字

点击跳转百度百科-java关键字

注意:修饰符(访问控制的也属于修饰)在使用时不存在先后顺序

  • 访问控制:

    private 私有的 protected 受保护的 public 公共的

  • 数据类型

    byte 字节型 char 字符型 short 短整型 int 整型
    long 长整型 float 浮点 double 双精度 boolean 布尔型

  • 类、方法和变量修饰符

    abstract 声明抽象 extends 继承 final 最终 class 类
    implements 实现 interface 接口 native 本地 new 创建
    synchronized 同步 transient 短暂 static 静态 strictfp 精准
    volatile 易失

  • 错误处理

    try 捕获异常 catch 处理异常 finally 有没有异常都执行
    throw 抛出一个异常对象 throws 声明索所有需要抛出的异常

  • 程序控制语句

    if 条件引导 else 反之 switch 分支引导 case 分支
    while 循环 for 循环 break 跳出循环 continue 继续
    return 返回 do 运行 instanceof 实例 default 默认

  • 包相关

    import 引入 package 包

  • 变量引用

    super 父类 this 本类 void 无返回值

  • 保留字

    cast const goto var rest outer operator inner generic future null true false

数据类型

java属于强类型语言,所有变量都必须先定义后才能使用。安全性高,速度慢。

  • 基本数据类型:字符型、布尔型、数值型(整数、浮点)

    注意:long数值后加L;float数值后加F

    ​ 最好避免使用浮点数进行比较

类型关键字占用内存取值范围
布尔型boolean1 字节true 或 false
字节型byte1 字节-128~127
字符型char2 字节ISO 单一字符集
短整型short2 字节-32768~32767
整型int4 字节-2147483648~2147483647
长整型long8 字节-9223372036854775808L~9223372036854775807L
单精度浮点型float4 字节+/-3.4E+38F(6~7 个有效位)
双精度浮点型double8 字节+/-1.8E+308 (15 个有效位)
  • 引用数据类型:类、接口、数组

    • 由用户自定义,用来限制其它数据类型。

    • java不支持C++中的指针类型、结构类型、联合类型和枚举类型。

    • 引用是一种数据类型(保存在栈中),保存了对象在内存(堆空间)中的地址。

    • 不同的引用可能指向同一个对象。一个对象可以有多个引用,即该类型的变量。

    • 引用类型变量相当于C中的指针。

  • 两种类型的区别

    所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失), 基本变量类型只有一块存储空间(分配在栈中), 而引用类型有两块存储空间(一块在栈中,一块在堆中)

值传递,引用传递

  • 值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
  • 引用传递:是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
  • java都是值传递。详细解释,点击跳转

数据类型转换

  • 不能对布尔值进行转换

  • 高转低必须强制转换,低转高则不必

  • 在进行数据运算时若操作数有多种类型,会自动升级为高类型

//强制转换
char a = 'A';
System.out.println((int)a);//输出结果为65
//强制转换可能存在内存溢出或精度问题

常用转义字符

转义字符意义ASCII码值
\n换行010
\r将当前位置移到本行开头013
\t水平制表009
\v垂直制表011
\\代表一个反斜杠092
\’代表一个单引号039
\"代表一个双引号034
\0空字符null000

变量

局部变量、实例变量、类变量

public class Perosn{
    
    //实例变量,从属于对象,可以不进行初始化
	//默认值:数值为0,布尔值为false,除基本类型其余都是null
	String name;
    
    //类变量 static
    static int age = 18;
    
    public static void main(String[] args){
        
        //局部变量,必须声明和初始化值
        int i = 0;
        
        //变量类型 变量名 = new 变量类型();
        Person p = new Person();
        p.name = "Jason";
        
        //类变量属于类本身,只要初始化完成,即可使用类变量
        System.out.println(age);
    }
}

常量

使用大写字符,初始化后不能再改变值

static final double PI = 3.14;

运算符

  • 算数运算符:+,-,*,/,%,++,–(%:模运算,取余)
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,,^,>>,<<,>>>(:按位取反,^:异或)
  • 条件运算符: ? : (三元运算符,x ? y : z 含义:如果x==true,则结果为y,否则为z)
  • 扩展赋值运算符:+=,-=,*=,/=

运算符优先级:点此跳转查看

运算相关问题

幂运算用Math.pow()

int a = 3;
int b = a++;
System.out.println(a);//输出为4
System.out.println(b);//输出为3
int c = 3;
b = ++c;
System.out.println(c);//输出为4
System.out.println(b);//输出为4
/*
即 b = a++; 相当于先把a值赋予b,之后a再自增
而 b = ++a; 相当于先让a自增,后赋值于b
*/
//短路运算
int a = 5;
boolean b = (a<4)&&(a++<4);
System.out.println(b);//输出false
System.out.println(a);//输出5
//因为在运行完a<4时,就已经确定b,后面的没有执行!
//字符串连接符 +
int a,b = 10,20;
System.out.println(""+a+b);//输出1020
System.out.println(a+b+"");//输出30

包机制

//定义包的语法格式
package pkg1[.pkg2[.pkg3…]];
//一般利用公司域名倒置作为包名,如
package com.baidu.www;
//导入包成员
import pkg1[.pkg2…].(classname|*);

Scanner

next():输入有效字符前的空白自动去掉,字符后的空白作为结束符,即next()不会得到带有空格的字符串

nextLine():以Enter为结束符,即该方法返回的是回车前的所有字符

hasNext()与hasNextLine():判断是否有输入,值都为布尔型

hasNextInt():判断是否输入为int类型,还有hasNextFloat()等数据类型判断方法

import java.util.Scanner;
public class Test1{
    public static void main(String[] args){
        //创建一个扫描器对象,用于接收键盘输入
        Scanner scan = new Scanner(System.in);
        
        System.out.println("使用next方式接收:");
        //判断用户有没有输入字符串
        if (scan.hasNext()){
            //使用next方式接收
            String str1 = scan.next();
            System.out.println("输入的内容为:" + str1);
        }
        //凡是属于IO流的类,如果不关闭会一直占用资源
        scan.close();
    }
}
/*
hasNext()可以换成hasNextLine(),此时相应的next()就应换成nextLine()
如果都输入Hello World,则第一个输出Hello,第二个输出Hello World
*/
//println:输出完会换行;print:输出完不会换行

if选择结构

if (布尔表达式1){
    //布尔表达式1值为true时要执行的代码
}else if(布尔表达式2){
    //布尔表达式2值为true时要执行的代码
}else{
    //以上表达式值都为false时要执行的代码
}

switch选择结构

  • switch语句中的变量类型可以是byte,short,int,char,从JAVA SE 7开始,支持String类型

  • case语句中值的类型必须与变量的数据类型相同,且必须为常量或字面常量

  • default分支在没有case语句的值和变量相等时执行,其不需要break语句

switch(expression){
    case value1 :
       //语句
       break; //可选
    case value2 :
       //语句
       break; //可选
    default : //可选
       //语句
}

while循环结构

while(布尔表达式){
    //true运行语句
}

do…while循环

do{
    //代码语句
}while(布尔表达式);

for循环

for(初始化条件;条件判断;迭代){
    //循环体
}
//增强型for循环,Java5引入。主要用于数组或集合。
for(声明语句:数组或集合){
    //代码语句
}
//声明语句中的局部变量的类型必须和数组元素的类型匹配

//例子
int[] numbers = {10,20,30,40};
//遍历数组的元素
for (int x:numbers){
    System.out.println(x);
}

break,continue

  • break用于强行退出循环,不再执行所在循环的代码(break也在switch中使用)
  • continue用于终止某次循环过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
  • 带有标签的continue和break(类似于goto):
//打印101-150之间的质数
int count = 0;
outer:for(int i=101;i<150;i++){
    for(int j=2;j<i/2;j++){
        if(i%j==0){
            continue outer;
        }
    }
    System.out.print(i+" ");
}

Java内存

    • 存放new的对象和数组
    • 可以被所有的线程共享,不会存放别的对象引用
    • 存放基本变量类型(会包含这个基本类型的具体数值)
    • 引用对象的变量(会存放这个引用在堆里的具体地址)
  • 方法区
    • 可以被所有的线程共享
    • 包含了所有的class和static变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值