学习Java之语法基础
Posted So istes immer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Java之语法基础相关的知识,希望对你有一定的参考价值。
1.数据类型
在Java中,基础数据类型的大小在所有机器上都是一样的
①基本数据类型
②复合数据类型(引用类型)
数组(Array)、类(class),、接口(interface)
1.函数中基本类型和对象的引用都是在栈内存中分配,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间
2.建立一个对象时,从堆栈两个地方都分配内存,在堆中分配的内存实际用于建立这个对象,而在栈中分配的内存只是一个指向这个堆对象的引用而已。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
2.数据的输入
用System.in输入流
①输入char型字符
read()方法可以从键盘读取字符,读入时的类型是byte型,需要强制类型转换
例:char c = (char)System.in.read()
②输入字符串
readLine()方法
由于从键盘输入的字符串在键盘缓冲区是字节流数据,如果要按字符序列来识别数据,需要用InputStreamReader进行转换,再用BufferedReader流对数据过滤
例:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();
③输入整型和双精度数
以字符串形式输入,再用Integer.parseInt(String)和Double.parseDouble(String)方法转换
例:String x = “123”;
int x = Integer.parseInt(x);
String x = “123.41”;
double n = Double.parseDouble(x);
④使用java.util.Scanner类
Scanner in=new Scanner(System.in);
boolean a = in.hasNext() 判断是否有下一个数据
byte a = in.nextByte()
int a = in.nextInt() 读取整数
short a = in.nextShort() 读取短整数
long a = in.nextLong() 读取长整数
String s = in.nextLine() 读取字符串
3.数据输出
print()方法:不换行输出
println()方法:换行输出
printf()方法:带格式输出,和C类似,特别: %n表示换行
4.标识符组成规则
字母(A~Z、a~z)、特殊符号($、_)和数字(0~9)
第1个符号不能为数字
不能为关键词、true、false、null
区分大小写
长度任意
一般约定
表示常量的标识符全部大写,如RED
表示类名的标识符用大写字母开始,如MyCar
表示公有方法和实例变量的标识符用小写字母开始,后面的描述性词以大写开始,如getCurrentValue
表示私有或局部变量的标识符全部用小写字母,如next_value
5.分隔符
①空白符:空格、换行符、制表符
②分号:表示语句结束,或用于for循环语句中
③逗号:变量之间的分隔
④冒号:switch循环中的case语句
⑤花括号:类体、方法体、复合语句(for/while/switch/if)
6.转义字符
\\ddd 1到3位8进制数所表示的字符(ddd)
\\uxxxx 1到4位16进制数所表示的字符(xxxx)
\\' 单引号字符
\\'' 双引号字符
\\\\ 反斜杠字符
\\r 回车
\\n 换行
\\f 走纸换页
\\t 横向跳格
\\b 退格
7.Unicode
Java中字符仅以一种形式存在,那就是Unicode。由于java采用unicode编码,char 在java中占2个字节
Unicode是16比特的字符编码,其支持当前世界上绝大多数的语言
Unicode给每个字符提供了一个唯一的编码表示,不论是什么平台、程序或语言
8.类型转换
①自动类型转换
源类型 转换后不会丢失数据的目的类型
byte short, char, int, long, float, double
short char, int, long, float, double
char int, long, float, double
int long, float, double
long float, double
float double
②强制类型转换
可能产生数据精度丢失
double a = 1.5;
float b = a;
float b = (float)a;
9.包装类
Java语言用包装类来把基本类型数据转换为对象。每个Java基本类型在java.lang包中都有一个相应的包装类
作用
一、区别:Integer是一个引用类型,而一个int是一个值类型
二、以List为例,动态数组的add(Object o)方法只能接受一个引用类型,即一个对象,想把数字放到一个动态数组里,就要对数字进行转化
三、包装类的一个重要的功能:适配器
String类型—>到Integer类型
想把一个String类型转换一个int类型的数据
①new Integer(String).intValue()
②Integer.parse(String)
int和Integer的互换
int a = 10;
//int转Integer
Integer b = new Integer(10);
Integer c = Integer.valueof(30);
//Integer转int
int d = b.intValue()
字符数组大小写转换
public class ep5_7 {
public static void main(String args[]) {
char a[] = { 'a', 'b', 'c', 'D', 'E', 'F' };
for (int i = 0; i < a.length; i++) {
if (Character.isLowerCase(a[i])) {
a[i] = Character.toUpperCase(a[i]);
} else if (Character.isUpperCase(a[i])) {
a[i] = Character.toLowerCase(a[i]);
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(" " + a[i]);
}
}
}
10.BigDecimal
用来对超过16位有效位的数进行精确的运算
双精度浮点型变量double可以处理16位有效数。
在实际应用中,需要对更大或者更小的数进行运算和处理。
BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。
BigDecimal b1 = new BigDecimal(Double.toString(0.05));
BigDecimal b2 = new BigDecimal(Double.toString(0.01));
double kk= b1.add(b2).doubleValue();
BigDecimal b3 = new BigDecimal(Double.toString(4.015));
BigDecimal b4 = new BigDecimal(Double.toString(100));
double kkc=b3.multiply(b4).doubleValue();
11.取余运算
被除数为负数,结果就为负的
-7 %3 -1
-12 % 4 0
-26 %-8 -2
20 % -13 7
12.switch语句
switch语句表达式的结果必须是byte, char, short, int 类型
13.foreach语句
int xs[]={1,3,4,5,5,7};
for(int x:xs){
System.out.println(" "+x);
}
14.System类
System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)
15.数组
默认赋初值
整型:初值为0 int[] i = new int[3];
实型:初值为0.0 float[] f = new float[3];
布尔型:初值为false boolean[] b = new boolean[3];
字符型:初值为\\u0000(不可见) char[] c = new char[3];
数组的整体赋值
int a[] = {2, 4, 6, 8};
int b[];
b = a;
16.练习
1.求1000以内的完数
完数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身
WanShu.java
public class WanShu {
public static int sumOfFactors(int n) {
int i,sum=0;
for(i=1;i<=n/2;i++) {
if(n%i==0)
sum+=i;
}
return sum;
}
public static void main(String[] args) {
int i=1;
System.out.println("1000以内的完数:");
while(i<=1000) {
if(sumOfFactors(i)==i) {
System.out.println(i);
}
i++;
}
}
}
2.输入一个整数,转成32位的二进制,并取出第四位到低八位
Digits.java
import java.util.Scanner;
public class Digits {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.print("请输入一个整数:");
int n=s.nextInt();
String str=Integer.toBinaryString(n); //求整数的二进制
while(str.length()<32) { //不足32位前面补0
str="0"+str;
}
System.out.print("低第4位-低第8位:");
System.out.print(str.substring(24,29));
}
}
以上是关于学习Java之语法基础的主要内容,如果未能解决你的问题,请参考以下文章