Java学习

Scanner使用的基本步骤

导包:
import java.util.Scanner;
创建对象:
Scanner sc(变量名)= new Scanner(System.in);(sc可以变其他不能变)
接收数据:
int i=sc.nextint()(i是变量名可以变其他不能变)
输出
System.out.println(1111);//换行打印
System.out.print(1111);//不换行打印
System.out.write(2222);//字节输出
System.out.printf("%+8.3f\n", 3.14);//按格式输出
输入
1.使用Scanner类:

(1)使用java.util包。 import java.util.*;

(2)构造Scanner类对象,它附属于标准输入流System.in。 Scanner s = new Scanner(System.in);

(3)常用的next()方法系列: nextInt():输入整数 nextLine():输入字符串 nextDouble():输入双精度数 next():输入字符串(以空格作为分隔符)。

import java.util.*;
public class DEMO_1 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.print(“输入你的姓名:”);
String name = s.nextLine();
System.out.print(“输入你的年龄:”);
int age = s.nextInt();
System.out.println(“姓名:” + name + " 年龄:" + age );
s.close(); //若没有关闭Scanner对象将会出现警告
}
}
注释:代码第1行创建了一个Scanner类的对象,这个对象是用来输入的。后面的代码是从控制台的输入中取出一个值,赋值给对应的变量。

类型转化

例:
int i=30/3.0;
int i=(int)30/3.0;

double b=10.3;
int a=(int)b;

浮点数比较大小

一般用如下方式进行比较
System.out.println(Math.abs(a-b)<1e-6);(因为有误差)

Random

导包
import java.util.Random;
创建对象
Random r=new Random();
获取随机数
int num= r.nextInt(x);(随机数的范围是[0,x))

变量定义注意事项

名字不能重复;
未赋值不能使用
long l=100000L(注意L防止整数过大)
float f=13.14F(浮点数默认是double型,加F为了防止类型不兼容)

标识符

由数字、下划线、字母、美元符号组成。

命名约定

有多个单词时第一个单词首字母小写,其他单词首字母大写。

类型转化

1、自动类型转化
把表示数据范围小的数值或者变量赋值给另一个表示范围大的数据类型

算术运算

要想得到小数,必须有浮点数参与运算

IDEA便捷操作

快速生成main
psvm+enter
输入输出
sout+回车
sin+回车
数组

数组

定义格式
格式一:数据类型 【】 变量名
例. int【】arr;
格式二:数据类型 变量名【】
例. int arr【】;
数组动态初始化:
初始化时只指定数组长度,值由系统分配。
例. int arr【10】;
初始化时,系统会为存储空间添加默认值
整数:0
浮点数:0.0
布尔值:False
字符:空字符
引用数据类型:null

Java中的内存分配

栈内存:存储局部变量
堆内存:存储new出来的内容(实体,对象)(使用完毕后会在空闲时回收空间

字符串的比较

1.使用==比较
基本类型:比较数据值是否相同。
引用类型:比较地址是否相同。
如果是两个引用对象想要比较值是否相同用equals(String s)函数。
例:
s1.equals(s2);

遍历字符串

for(i=1; i<s.length;i++)
sout(s.charAt(i));

无法从静态上下文中引用非静态变量,非静态方法

因为我们知道静态的方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对象未创建实例时我们在静态方法中调用了非静态成员方法自然是非法的,所以编译器会在这种时候给各错误.

简单说来,静态方法可以不用创建对象就调用,非静态方法必须有了对象的实例才能调用.因此想在静态方法中引用非静态方法是不可能的,因为它究竟引用的是哪个对象的非静态方法呢?编译器不可能给出答案,因为没有对象啊,所以要报错.

String与 StringBuffer 与StringBuilder

StringStringBufferStringBuilder
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量可变类,速度更快
不可变可变可变
线程安全线程不安全
多线程操作字符串单线程操作字符串

内部类与异常类

内部类

1.内部类中不能声明类变量和类方法;
2.内布列的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也能调 用外嵌类的方法。
3.其他类不能用某个类的内部类声明对象。
内部类的字节码文件名字格式:外嵌类名$内部类名。
static内部类不能操作外嵌类的实例成员变量。

匿名类

1.不能使用匿名类声明对象,可以直接用匿名类创造一个对象。
2.可以继承也可以重写父类的方法。
3.一定是内部类。
4.类体中不能声明static成员和static方法。
5.可以使用接口名和类体创建匿名类,类体中必须重写接口中所有方法。

异常类

调用方法抛出异常对象终止程序运行。

try-catch语句

throw:
throw的作用就是抛出异常.
try抛出异常对象或调用某个可能抛出异常对象的方法,接该方法抛出了异常对象,try将会终止运行,转向相应的catch部分。
格式:
try{
可能发生异常的语句。
}
catch(ExceptionSubClass1 e){
}
catch(ExceptionSubClass2 e){
}

断言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值