Java基础语法
合法标识符的规则:
由字母、数字、下划线“_”、美元符号“$”组成,并且首字母不能是数字。
(关键字也不可以)(汉字也可,很不建议)
判断是否为合法标识符
Character.isJavaIdentifierStart(start); /*判断首字母是否合法 *输入:一个字符 *如果合法返回true,否则返回false */ Character.isJavaIdentifierPart(ch); /*判断其他(中间)部分是否合法 *输入:一个字符 *如果合法返回true,否则返回false */
编译器技巧
输入main,选择第二个,自动生成 public static void main(String[] args) { //输入Scanner按下Alt+/ 自动导入包 //编译器输入Syso,然后按Alt键+/;自动生成 System.out.println(); }
输入输出
基本操作
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in);//建立输入工具 int a = sc.nextInt();//输入 int b = sc.nextInt(); System.out.println(a+b);//输出 sc.close();//关闭键盘输入工具 } }
常用知识
** 不确定个数输入:** while(sc.hasNext())
常量与变量
常量
java的常量用final
例如:
final int a;
基本数据类型
特点:
不同平台,储存相同
精度从低到高排序
- 字符byte:最小值-128,最大值127,其他同理
- 短整型short:最小-32768,最大32767
- long: 19位
- char:可以储存整数,甚至可以直接与int运算(想输出char,需要进行强制类型转换)。
整数运算时候默认为int类型,小数一直默认为double类型
点击展开问题代码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner reader = new Scanner(System.in); // 键盘输入工具 //下面赋值没有问题 byte a=12; short b=120; int c=120; long d=1200; //下面两条语句正确 byte a1=a+1; short b1=b+1; //下面两条语句正确 int c1=c+1; long d1=d+1; //解决方法 byte a2=(byte)222; //下面第一条赋值运算错误 float f=1.2; double dou=1.22; //解决方法1 float ff=2.3222F; float fff=2.333f; //解决方法2 float ffff=(float)2.333; // reader.close(); // 关闭键盘输入工具 } } }
原因:
- 从低精度向高精度赋值,系统自动转换类型
- 如果需要高到低,使用强制类型转换(可能会丢失精度)
输入方式
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //十进制 int i1=12; System.out.println(i1); System.out.println(); //二进制标志:0b/0B int i2=0B110; int i22=0b110; System.out.println(i2); System.out.println(i22); System.out.println(); //八进制标志:0 int i3=0100; System.out.println(i3); System.out.println(); //十六进制标志:0X/0x int i4=0X100; System.out.println(i4); System.out.println(); double d2=1.234e2;// =1.234*10^2=123.4, 实数的第二种表示方式,科学计数法,e表示10。 sc.close(); } }
输出方式
控制浮点数 小数位
方法0:printf
double c=12.123456; System.out.printf("%.2f",c);
方法1:
double d = 123.2315455458; String s = String.format("%.6f", d);//注意是f //保留6位小数,最后一位四舍五入 System.out.println(s);
方法2:
double b = 123.2315455458; double c = 123.2315455458; double d =(double)(Math.round(b*1000))/1000; //保留3位小数 double e =(double)(Math.round(c*100))/100; //保留2位小数
方法3:
展开源码
double f = 123.2315455458; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); //保留3位小数,最后一位四舍五入 System.out.println(f1);
方法4:
展开源码
1 DecimalFormat df = new DecimalFormat("#.000"); //#.000保留三位小数,依次类推 2 String f = df.format(123.2315452); //四舍五入 3 System.out.println(f);
精确计算(BigDecimal类)
BigDecimal概述
位置: JAVA.Math
作用: 用来对超过16位有效位的数进行精确的运算。(直接使用Float和Double处理,会丢失精度。)
使用:
String a; a=sc.next(); BigDecimal a1=new BigDecimal(a);
说明:
1)参数类型为double时,传入的值与方法中的值可能会不同
(因为数值可能:不能表示为任何有限长度的二进制小数)
2)String 构造方法一定等于传入值
(建议优先使用String构造)
3)当double必须用作BigDecimal的源时,
应进行转换:
- 先使用Double.toString(double)方法,
- 然后使用BigDecimal(String)构造方法,将double转换为String。
- 要获取该结果:使用static valueOf(double)方法。
常用方法
add(BigDecimal) //BigDecimal对象中的值相加,返回BigDecimal对象 subtract(BigDecimal) //BigDecimal对象中的值相减,返回BigDecimal对象 multiply(BigDecimal) //BigDecimal对象中的值相乘,返回BigDecimal对象 divide(BigDecimal) //BigDecimal对象中的值相除,返回BigDecimal对象 toString() //将BigDecimal对象中的值转换成字符串 doubleValue() //将BigDecimal对象中的值转换成双精度数 //floatValue() longValue() intValue()同理
实战
/* 输入若干对浮点数,对每对浮点数输出其精确的和与乘积。 有若干次输入 注1:直接使用double类型数据进行运算,无法得到精确值。 注2:输出时直接调用BigDecimal的toString方法。 输入样例: 69.1 0.02 1.99 2.01 输出样例: 69.12 1.382 4.00 3.9999 */ import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); while (in.hasNext()) { String a=in.nextLine();//直接使用String即可 String b=in.nextLine(); BigDecimal a1 = new BigDecimal(a); BigDecimal b1 = new BigDecimal(b); System.out.println(b1.add(a1)); System.out.println(b1.multiply(a1)); } } }
基本类型封装类
种类及名称
优点
提供比基本类型更多的信息和功能
举例
import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.println( Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); System.out.println(Integer.SIZE); System.out.println(Integer.TYPE); int i=8; System.out.println(i); System.out.println(Integer.toBinaryString(i)); //转化成2进制 /* Integer.toHexString(i);//转化成16进制 Integer.toOctalString(i);//转化成8进制 Integer.toString(i);//转化成10进制 */ } }
自动装拆箱
自动装箱:基本输入类型-->封装类
自动拆箱:封装类-->基本数据类型
int i=10; Integer j=i;//自动装箱 int k=j;//自动拆箱
是从jdk5.0开始支持的
特点:部分共享地址
大小位于-128到127
的封装类对象共享地址
Integer i11=100; Integer i12=100; System.out.println(i11==i12); //输出结果:true Integer i11=1000; Integer i12=1000; System.out.println(i11==i12); //输出结果:false
引用型变量
特点: 变量名字默认代表地址,比较变量不能直接比较变量名字
一维数组
基本操作
初始值
默认:
赋初始值:
import java.util.Arrays; public class Main { public static void main(String[] args) { //赋初始值 //方法一 int[] c; c=new int[] {1,2,3,4,5}; //方法二 int[] d= {1,2,3,4,5}; } }
基本操作
import java.util.Scanner; public class Main { public static void main(String[] args) { int n=10; //声明数组 //方法一 数组元素的数据类型[] 变量名 int[] e; String[] name; //方法二 数组元素的数据类型 变量名[] int c[]; String names[]; //创建数组:java 数组是对象,用new创建 int[] f;//声明 e=new int[12];//分配空间,并赋初始值 int[] a=new int[n];//将上面两步合成一步 System.out.println(a.length); //取值为0--a。length-1 //for(int i=0;i<10;i++)最好改为 for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } System.out.println(); System.out.println(a); //打印对象a,(c语言指向首地址) //遍历输出 //方法一 for... //方法二 System.out.println(Arrays.toString(c)); //方法三foreach for(int e:c) { System.out.print(e+" "); }
引用型变量特点
对比两个数组是否相同
- 不能直接对比a和b,因为名字代表地址
int[] a=new int[n]; int[] b=new int[n]; System.out.println(a); System.out.println(b); System.out.println(a==b);//a和b每个数值都相同,但是a与b 不相同
方法: 使用java自带函数equals
int[] d= new int[15]; int[] a= new int [15]; System.out.println(Arrays.equals(d,a));
与c语言的区别
-
数组名称a:
-
- java表示:对象a,(c语言指向首地址)
-
- 输出a的结果:[I@1cd072a9
[I 代表一维数组
后面1c...是哈希码(16位)
- 输出a的结果:[I@1cd072a9
-
数组a和数组b每个数值都相同,但是a与b 不相同
常用函数
int[] c=new int[]{25,25252,52,4,5}; Arrays.sort(c); System.out.println(Arrays.toString(c)); //二分查找:需要已经排序 //如果找到:返回目标字符串的坐标 int index1=Arrays.binarySearch(c, 5); System.out.println(index1); //如果未找到:返回负数 int index2=Arrays.binarySearch(c, 100); System.out.println(index2);
二维数组
int[][] m=new int [3][40]; int[][] m1=new int [3][40]; System.out.println(Arrays.toString(m)); //二维数组函数:在一维数组的函数前加入deep System.out.println(Arrays.deepToString(m)); System.out.println(Arrays.deepEquals(m,m1)); //foreach for(int[] arr1:m) { for(int element: arr1) { System.out.println(element+" "); } } //tostring System.out.println(Arrays.deepToString(m)); int[][] a; a= new int[3][]; a[1]= new int[5]; System.out.println(Arrays.deepToString(a)); a[0]= new int[] {1,2}; System.out.println(Arrays.deepToString(a));
字符串
1输入字符串 遇到空格或者换行结束
Scanner sc=new Scanner(System.in); String str=new String(); str=sc.next();
2输入一行字符串 (包括空格)
Scanner sc=new Scanner(System.in); String str=new String(); str=sc.nextLine();
运算符和表达式-算术、关系、逻辑
(没写就是与c相同)
关系:(判别式)?(结果1):(结果2)
结果会自动转换数据类型为两结果的较高类型
关系:instanceof
(面向对象再学)
作用:
dujde变量指向的对象是不是某类的实例
案例:
Scanner reader = new (Scanner.in); System.out.println(reader instanceof Scanner);
逻辑:
&& ||与& |的差别在于前面单路运算(如果计算了符号左边,结果已经可以得出,则右边不再运算),后面双路运算
- 【判断题】(错)
在Java中,&&、||和 &、|都表示逻辑的与、或运算,二者使用起来没有什么差异。
二进制
顺序、分支、环和跳转(与c相同)
常用函数
Math函数(数学函数)
JAVA中使用方法:
例如取对数函数x=Math.sqrt(x)
方法介绍:
- tan(double degree)
-
- 用于计算弧度为degree的角度的正切值。
- Math.PI:提供较为准确的‘π’
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15219683.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步