1、基本数值数据类型:Java与C++不同,没有long long类型,而多了bype类型。而且Java的long等于C++的long long;
下表来自博主C加加的博客:
C++与Java基本数据类型及所占用内存空间比较
----------------C++------------------------Java----------
(01)01)bool----------------1 byte-----01)boolean--1 byte
(02)02)char----------------1 byte-----02)char-----2 bytes
(03)---signed char---------1 byte 03)byte-----1 byte
(04)---unsigned char-------1 byte
(05)03)wchar_t-------------2 bytes //char的扩展,一般为16位或32位
(06)04)short---------------2 bytes----04)short----2 bytes
(07)---unsigned short------2 bytes
(08)05)int-----------------4 bytes----05)int------4 bytes
(09)---unsigned int--------4 bytes
(10)06)long----------------4 bytes----06)long-----8 bytes
(11)---unsigned long-------4 bytes
(01)01)bool----------------1 byte-----01)boolean--1 byte
(02)02)char----------------1 byte-----02)char-----2 bytes
(03)---signed char---------1 byte 03)byte-----1 byte
(04)---unsigned char-------1 byte
(05)03)wchar_t-------------2 bytes //char的扩展,一般为16位或32位
(06)04)short---------------2 bytes----04)short----2 bytes
(07)---unsigned short------2 bytes
(08)05)int-----------------4 bytes----05)int------4 bytes
(09)---unsigned int--------4 bytes
(10)06)long----------------4 bytes----06)long-----8 bytes
(11)---unsigned long-------4 bytes
(12)07)long long-----------8 bytes
(13)---unsigned long long--8 bytes
(14)08)float---------------4 bytes----07)float----4 bytes
(15)09)double--------------8 bytes----08)double---8 bytes
(16)10)long double--------12 bytes
----------------------------------------------------------
(13)---unsigned long long--8 bytes
(14)08)float---------------4 bytes----07)float----4 bytes
(15)09)double--------------8 bytes----08)double---8 bytes
(16)10)long double--------12 bytes
----------------------------------------------------------
2、不同于C++,Java的输入需要自己定义,可以定义从控制台输入和从文件中读取
如:java.util.Scanner input = new java.util.Scanner (System.in/file) 前者从控制台,后者从文件
3、强制类型转化
1)、保留小数点后n(以2为例)位: (int)(a*100)/100.0;
2)、char与数值类型:整数转化为char时,取后16位(这说的是Java),如:char ch = (char)OXAB0041;
浮点数转化为char,先转为int,再转为char,如 char ch = (char)65.25;
上述ch结果均为'A';
4、next()和nextline()方法的区别:前者读取以空白字符结束的字符串(' ','\t','\n'等),后者以按下回车键为结束符(即'\n');
5、随机函数
(1)Math.random()
1)、产生两位随机整数: int n = (int)(Math.random()*90+10)
//Math.random返回区间[0.0,1.0)中的任意一个数
=> a + Math.random()*b
返回[a,a+b) 内的随机数;
2)、生成随机小写字母: char ch = (char)('a' + Math.random()*('z'-'a'+1));
=> (char)(ch1 + Math.random()*(ch2 - ch1 + 1)) 生成ch1到ch2(包括首尾)之间的随机字符;
(2)java.util.Random
6、输入输出重定向
当数据过多时,可以将这些数据用空格隔开,保存在名为input.txt的文本文件中,然后使用指令:
java x < input.txt;
//x是文件的名称,即x.java.
同理,输出重定向将输出给文件output.txt,指令为:
java ClassName > output.txt;
这两条指令也合并在一起使用,如:
java SentineValue < input.txt > output.txt
7、从大到小添加数字没有比从小到大添加数字得到的数值精确,即是在大数之前先增加小数可减少误差;
代码1:先增加大数
import javax.swing.*;
import java.util.*;
import java.awt.Graphics;
public class Main{
public static void main(String [] args){
double sum = 0;
double a = 1.0;
for(int i = 0;i<100;i++){
sum += a;
a -= 0.01;
}
System.out.println(sum);
}
}
运行结果:50.49999999999995
代码2:先增加小数
import javax.swing.*;
import java.util.*;
import java.awt.Graphics;
public class Main{
public static void main(String [] args){
double sum = 0;
double a = 0.01;
for(int i = 0;i<100;i++){
sum += a;
a += 0.01;
}
System.out.println(sum);
}
}
运行结果:50.50000000000003
显然代码2更为精确;
8、简便的是10->16进制转化函数
public static String toHex(int dec){
String hex = "";
while(dec!=0){
int t = dec % 16;
hex += toHexChar(t);
dec /= 16;
}
return hex;
}
public static char toHexChar(int n)
{if(n<10)
return (char)(n+'0');
else return (char)(n-10+'A');
}
}
10、Math类的五个取整函数
static double ceil(doublea):天花板函数,返回大于等于a的最小整数(但是以浮点数形式存储)。
static double floor(doublea):地板函数,返回小于等于a的最大整数(但是以浮点数形式存储)。
static double rint(doublea):四舍五入函数,返回与a的值最相近的整数(但是以浮点数形式存储)。当a为xx.5时,向绝对值小的方向靠拢。
static long round(doublea):四舍五入函数,返回与a的值最相近的长整型数。(long)(Math.floor(x+0.5));
static int round(floata):四舍五入函数,返回与a的值最相近的整型数。(int)(Math.floor(x+0.5));
11、随意打乱数组元素(洗牌) && for-each循环(即不用下标变量直接遍历整个数组):
import javax.swing.*;
import java.util.*;
import java.awt.Graphics;
public class Main{
public static void main(String [] args){
int []a = {1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<a.length;i++){
int index = (int)(Math.random()*a.length);
int t = a[i];
a[i] = a[index];
a[index] = t;
}
for(int u:a)
System.out.println(u);
}
}
12、二分查找法:
public static int BinarySearch(int []a,int key){
int low =0;
int high = a.length - 1;
while(low <= high){
int mid = (low+high)/2;
if( a[mid] < key) low = mid + 1;
else if(a[mid] == key) return mid;
else high = mid -1;
}
return -low - 1;
}
public static void insertionsort(double []a){
for(int i=1;i<a.length;i++){
double c = a[i];
int k;
for(k=i-1;k>=0&&a[k]>c;k--){
a[k+1] = a[k];
}
a[k+1] = c;
}
}
14、Arrays类:1、fill方法:替换整个数组或者部分数组的元素;
2、sort方法:排序
3、binarySearch:二分查找
4、equals:判断数组是否相等