Core Java学习笔记
Java语言执行过程:
源程序--->javac进行编译--->生成字节码文件-->java来执行
JDK JRE JVM
JAVA_HOME:JDK安装目录
CLASSPATH:告诉JVM从什么位置找字节码文件
PATH:让javac java可以在任何位置执行
对象,所以默认为null
java基本数据类型就8种,记住就好了。除了这些都是引用型的了。
java四类八种基本数据类型
第一类:整型 byte short int long
第二类:浮点型 float double
第三类:逻辑型 boolean(它只有两个值可取true false)
第四类:字符型 char
在栈中可以直接分配内存的数据是基本数据类型。
引用数据类型:是数据的引用在栈中,但是他的对象在堆中。
要想学好Java必须知道各种数据的在内存中存储位置。
对内存有了很好的了解,可以有助你分析程序。
字节:
boolean 布尔型 1/8
byte 字节类型 1
char 字符型 2 一个字符能存储一个中文汉字
short 短整型 2
int 整数类型 4
float 浮点类型(单精度) 4
long 长××× 8
double 双精度类型(双精度) 8
java中默认的整数类型是int类型,如果要定义为float型,则要在数值后加上l或L;
默认的浮点型也是双精度浮点,如果要定义为float型,则要在数值后加上f或F。
一个字节等于8位,一个字节等于256个数,就是-128到127一共256。
kB就是kBytes
Bytes就是“字节”的意思!
K就是千的意思,因为计算机是通过二进制来计算,10个1正好是1024
1111111111(二进制)=1024(十进制)
1Bytes(字节)=8bit(比特)
一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节
一个汉字就是两个字符,占用两个字节。
一般讲大小是用Bytes,大写的“B”,讲网络速率是用bit,注意是小写的“b”。
例:一个文件有8MBytes
例:我下载文件的速率是256KB/s,即2Mbit,这通常就是我们宽带上网的速率。
记住:小可转大,大转小会失去精度!!!
1. 基本数据类型对象包装类中的方法 static String toString(基本类型);2. String类中的方法: static String valueOf(基本类型)3. 基本类型数据 +“ ”;
System.out.println(Integer.parseInt("23") + 1);
parseInt(intString , radix);
System.out.println(a.compareTo(b));
而很多对象都可以进行比较。所以这个方法定义在Comparable接口中。
代码体现:
/**
* 需求:"34 9 -7 67 25"要求对这个字符串中的数值进行从小到大的排序,生成一个数值有序的字符串。
* @author Administrator
*
*/
publicclass StringTestint {
/**
* @param args
*/
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
//要操作的目标
String s = "34 9 -7 67 25";
//用空格对原字符串进行切割,转成字符串数组;
String[] s1 = s.split(" ");
//定义int[]数组,用来存放整型数据
int[] arr = newint[s1.length];
//将字符串数组转成int类型的数组。
for(int i = 0 ; i < s1.length; i++)
arr[i] = Integer.parseInt(s1[i]);
//对int类型的数组进行排序
for(int i = 0 ; i < s1.length;i++){
for(int j = i+1 ; j < s1.length;j++){
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
//定义字符串缓冲区,并将int类型的数组转换为 字符串类型的数组。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if(i != arr.length - 1)
sb.append(arr[i] + " ");
else
sb.append(arr[i]);
}
System.out.println(sb);
}
}
代码优化:
import java.util.Arrays;
publicclass WrapperTest2 {
privatestaticfinal String SPACE = " ";
/**
* @param args
*/
publicstaticvoid main(String[] args) {
/*
* 综合练习:
* "34 9 -7 12 67 25"要求对这个字符串中的数值进行从小到大的排序,
* 然后生成一个数值有序的字符串。
*
* 思路:
* 1,看到排序,就想要到了数组
* 2,那数组中的元素怎么获取呢?数值都在字符串中。
* 3,先从字符串中获取到这些具体的数值。怎么获取呢?
* 4,发现这个字符串居然有规律。数值之间都是由空格隔开的。
* 可以对字符串进行切割。
* 5,将获取的数据存储到数组中并排序,在将数组转成字符就可以了。哦了。
*
*
* 步骤:
* 1,将字符串切割成字符串数组。split。
* 2,定义一个int数组将字符串数组中的元素转成整数存储到int数组中。
* 3,对int数组排序。
* 4,将int数组排序后转成一个字符串。
*
*/
String str = "34 9 -7 12 67 25";
str = sortStringNumber(str);
System.out.println(str);
}
publicstatic String sortStringNumber(String str) {
//1,将字符串中的数值通过指定的规则进行切割获取字符串数组。
String[] str_nums = toStringArray(str);
//2,将字符串数组转成int数组。
int[] nums = toIntArray(str_nums);
//3,对int数组排序;
sortIntArray(nums);
//4,将int数组变成字符串。
return arrayToString(nums);
}
/*
* 将int数组变成字符串。
*/
privatestatic String arrayToString(int[] nums) {
//1,创建字符串缓冲区。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < nums.length; i++) {
if(i!=nums.length-1)
sb.append(nums[i]+SPACE);
else
sb.append(nums[i]);
}
return sb.toString();
}
/*
* 对int数组排序。
*/
privatestaticvoid sortIntArray(int[] nums) {
Arrays.sort(nums);
}
/*
* 将字符串数组转成int数组。
*/
privatestaticint[] toIntArray(String[] str_nums) {
//1,先定义一个int数组。
int[] arr = newint[str_nums.length];
//2,对字符串数组进行遍历。
for (int i = 0; i < str_nums.length; i++) {
//将数组格式的字符串转成整数。存储到arr数组中。
arr[i] = Integer.parseInt(str_nums[i]);
}
return arr;
}
/*
* 将字符串转成字符串数组。
*/
privatestatic String[] toStringArray(String str) {
return str.split(SPACE);
}
}