「得到地址java」得到地址数据长度
今天给各位分享得到地址java的知识,其中也会对得到地址数据长度进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
如何获得java对象的内存地址
在java中内存中的对象地址是可变的,所以获得的内存地址有可能会变化。要获得内存地址也只能通过Unsafe的方法来获得,如下代码示例:
package com.bijian.study;
import java.lang.reflect.Field;
import sun.misc.Unsafe;
public class Addresser {
//实例化Unsafe 类
private static Unsafe unsafe;
static {
try {
//得到field对象
Field field = Unsafe.class.getDeclaredField("theUnsafe");
//设置获取地址
field.setAccessible(true);
unsafe = (Unsafe) field.get(null);
} catch (Exception e) {
e.printStackTrace();
}
}
public static long addressOf(Object o) throws Exception {
Object[] array = new Object[] { o };
long baseOffset = unsafe.arrayBaseOffset(Object[].class);
int addressSize = unsafe.addressSize();
long objectAddress;
switch (addressSize) {
case 4:
objectAddress = unsafe.getInt(array, baseOffset);
break;
case 8:
objectAddress = unsafe.getLong(array, baseOffset);
break;
default:
throw new Error("unsupported address size: " + addressSize);
}
return (objectAddress);
}
//打印地址的长度
public static void main(String... args) throws Exception {
Object mine = "Hi there".toCharArray();
long address = addressOf(mine);
System.out.println("Addess: " + address);
// Verify address works - should see the characters in the array in the output
printBytes(address, 27);
}
//调用此方法得到地址
public static void printBytes(long objectAddress, int num) {
//循环打印得到的地址。
for (long i = 0; i num; i++) {
int cur = unsafe.getByte(objectAddress + i);
System.out.print((char) cur);
}
System.out.println();
}
}
运行结果:
如何获取到JAVA对象所在的内存地址
1、首先打开java构造方法代码。
2、接下来就可以获得网卡物理地址方法代码。
3、然后得到获得机器IP地址方法代码。
4、然后得到获得机器子网掩码方法代码。
5、然后得到获得机器默认网关方法代码。
6、然后得到获得DNS方法代码。
7、最后得到主函数测试方法代码。
扩展资料
当使用80386时,必须区分以下三种不同的地址:
逻辑地址:机器语言指令仍用这种地址指定一个操作数的地址或一条指令的地址。这种寻址方式在Intel的分段结构中表现得尤为具体,它使得MS-DOS或Windows程序员把程序分为若干段。每个逻辑地址都由一个段和偏移量组成。
线性地址:针对32位CPU,线性地址是一个32位的无符号整数,可以表达高达2³² (4GB)的地址。通常用16进制表示线性地址,其取值范围为0x00000000~0xffffffff。对64位CPU,线性地址是一个64位的无符号整数,可以表达高达2⁶⁴ 。
物理地址:也就是内存单元的实际地址,用于芯片级内存单元寻址。物理地址也由32位无符号整数表示。
电脑的内存(尤其是指主存)是由许多“内存地址”所组成的,每个内存地址都有一个“物理地址”,能供CPU(或其他设备)访问。一般,只有如BIOS、操作系统及部分特定之公用软件(如内存测试软件)等系统软件;
能使用机器码的运算对象或寄存器对物理地址定址,指示CPU要求内存控制器之类的硬件设备,使用内存总线或系统总线,亦或分别之控制总线、地址总线及数据总线,运行该程序之命令。
内存控制器的总线是由数条并行的线路所组成的,每条线路表示一个比特。总线的宽度因此依电脑不同,决定了可定址之存储单位数量,以及每一单位内的比特数量。
计算机程序使用内存地址来运行机器码、存储及截取数据。大多数的应用程序无法得知实际的物理地址,而是使用电脑的内存管理单元及操作系统的内存映射,为“逻辑地址”或虚拟地址定址。
参考资料:百度百科-内存地址
java怎么获取系统mac地址
首先,创建工程,包,和一个类。
在此不加详述,我们直接看代码。
这里,我把这个类命名为GetMacAddr
这里,最最关键的就是这里这个方法。
我们通过NetworkInterface这个类来操作。
也就是通过getLocalHost()方法先得到本机IP,
然后调用getHardwareAddress()方法得到一个byte数组的地址。
我们把六位地址传到一个byte数组里面,然后输出来就是。
不多废话,看代码:
private void getMACAddr()
throws SocketException, UnknownHostException {
// 获得IP
NetworkInterface netInterface =
NetworkInterface.getByInetAddress(InetAddress.getLocalHost());
// 获得Mac地址的byte数组
byte[] macAddr = netInterface.getHardwareAddress();
System.out.print("MAC Addr:\t");
// 循环输出
for (byte b : macAddr) {
// 这里的toHexString()是自己写的格式化输出的方法,见下步。
System.out.print(toHexString(b) + " ");
}
}
上一步骤中,为什么会出现一个toHexString()方法呢?
因为可能10进制转16进制时候可能会出现单字符,
所以,如果有出现单字符的情况,我们在其前面添加一个“0”做占位符。
这也是为了视觉的直观,也夹带着个人的习惯。
private static String toHexString(int integer) {
// 将得来的int类型数字转化为十六进制数
String str = Integer.toHexString((int) (integer 0xff));
// 如果遇到单字符,前置0占位补满两格
if (str.length() == 1) {
str = "0" + str;
}
return str;
}
java如何获取mac地址?
以windows举例。\x0d\x0a运行命令" cmd ipconfig /all"就会出现以下结果\x0d\x0a \x0d\x0aPhysical Address. . . . . . . . . : 20-CF-30-9A-60-EE\x0d\x0a。\x0d\x0ajava就能过这样的命令来获取。以下是示例。\x0d\x0a\x0d\x0aimport java.io.BufferedReader;\x0d\x0aimport java.io.IOException;\x0d\x0aimport java.io.InputStreamReader;\x0d\x0a\x0d\x0apublic class TestMac\x0d\x0a{\x0d\x0a public static void main(String[] args) {\x0d\x0a System.out.println("Operation System=" + getOsName());\x0d\x0a System.out.println("Mac Address=" + getMACAddress());\x0d\x0a System.out.println("通过ip获取mac"+getMACAddress("192.168.1.101"));\x0d\x0a }\x0d\x0a\x0d\x0a public static String getOsName() {\x0d\x0a String os = "";\x0d\x0a os = System.getProperty("os.name");\x0d\x0a return os;\x0d\x0a }\x0d\x0a \x0d\x0a public static String getMACAddress() {\x0d\x0a String address = "";\x0d\x0a String os = getOsName();\x0d\x0a if (os.startsWith("Windows")) {\x0d\x0a try {\x0d\x0a String command = "cmd.exe /c ipconfig /all";\x0d\x0a Process p = Runtime.getRuntime().exec(command);\x0d\x0a BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));\x0d\x0a String line;\x0d\x0a while ((line = br.readLine()) != null) {\x0d\x0a if (line.indexOf("Physical Address") 0) {\x0d\x0a int index = line.indexOf(":");\x0d\x0a index += 2;\x0d\x0a address = line.substring(index);\x0d\x0a break;\x0d\x0a }\x0d\x0a }\x0d\x0a br.close();\x0d\x0a return address.trim();\x0d\x0a } catch (IOException e) {\x0d\x0a }\x0d\x0a } else if (os.startsWith("Linux")) {\x0d\x0a String command = "/bin/sh -c ifconfig -a";\x0d\x0a Process p;\x0d\x0a try {\x0d\x0a p = Runtime.getRuntime().exec(command);\x0d\x0a BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));\x0d\x0a String line;\x0d\x0a while ((line = br.readLine()) != null) {\x0d\x0a if (line.indexOf("HWaddr") 0) {\x0d\x0a int index = line.indexOf("HWaddr") + "HWaddr".length();\x0d\x0a address = line.substring(index);\x0d\x0a break;\x0d\x0a }\x0d\x0a }\x0d\x0a br.close();\x0d\x0a } catch (IOException e) {\x0d\x0a }\x0d\x0a }\x0d\x0a address = address.trim();\x0d\x0a return address;\x0d\x0a }\x0d\x0a\x0d\x0apublic static String getMACAddress(String ipAddress) { \x0d\x0aString str = "", strMAC = "", macAddress = ""; \x0d\x0atry { \x0d\x0aProcess pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress); \x0d\x0aInputStreamReader ir = new InputStreamReader(pp.getInputStream()); \x0d\x0aLineNumberReader input = new LineNumberReader(ir); \x0d\x0afor (int i = 1; i str = input.readLine(); \x0d\x0aif (str != null) { \x0d\x0aif (str.indexOf("MAC Address") 1) { \x0d\x0astrMAC = str.substring(str.indexOf("MAC Address") + 14, \x0d\x0astr.length()); \x0d\x0abreak; \x0d\x0a} \x0d\x0a} \x0d\x0a} \x0d\x0a} catch (IOException ex) { \x0d\x0areturn "Can't Get MAC Address!"; \x0d\x0a} \x0d\x0a// \x0d\x0aif (strMAC.length() return "Error!"; \x0d\x0a} \x0d\x0a\x0d\x0amacAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5) \x0d\x0a+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11) \x0d\x0a+ ":" + strMAC.substring(12, 14) + ":" \x0d\x0a+ strMAC.substring(15, 17); \x0d\x0a// \x0d\x0areturn macAddress; \x0d\x0a} \x0d\x0a} \x0d\x0a\x0d\x0a剑天梦的回答原理和我这个一样,都是通过Process 执行命令。 我直接补充到答案里了。不过\x0d\x0a我这边运行那个命令出来的结果很多,那么花的时间就长了。优点是能够获取别人的mac地址 。
Java获取当前路径的几种方法
1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹
try{
System.out.println(directory.getCanonicalPath());//获取标准的路径
System.out.println(directory.getAbsolutePath());//获取绝对路径
}catch(Exceptin e){}
File.getCanonicalPath()和File.getAbsolutePath()大约只是对于new File(".")和new File("..")两种路径有所区别。
# 对于getCanonicalPath()函数,“."就表示当前的文件夹,而”..“则表示当前文件夹的上一级文件夹
# 对于getAbsolutePath()函数,则不管”.”、“..”,返回当前的路径加上你在new File()时设定的路径
# 至于getPath()函数,得到的只是你在new File()时设定的路径
比如当前的路径为 C:/test :
File directory = new File("abc");
directory.getCanonicalPath(); //得到的是C:/test/abc
directory.getAbsolutePath(); //得到的是C:/test/abc
direcotry.getPath(); //得到的是abc
File directory = new File(".");
directory.getCanonicalPath(); //得到的是C:/test
directory.getAbsolutePath(); //得到的是C:/test/.
direcotry.getPath(); //得到的是.
File directory = new File("..");
directory.getCanonicalPath(); //得到的是C:/
directory.getAbsolutePath(); //得到的是C:/test/..
direcotry.getPath(); //得到的是..
另外:System.getProperty()中的字符串参数如下:
System.getProperty()参数大全
# java.version Java Runtime Environment version
# java.vendor Java Runtime Environment vendor
# java.vendor.url Java vendor URL
# java.home Java installation directory
# java.vm.specification.version Java Virtual Machine specification version
# java.vm.specification.vendor Java Virtual Machine specification vendor
# java.vm.specification.name Java Virtual Machine specification name
# java.vm.version Java Virtual Machine implementation version
# java.vm.vendor Java Virtual Machine implementation vendor
# java.vm.name Java Virtual Machine implementation name
# java.specification.version Java Runtime Environment specification version
# java.specification.vendor Java Runtime Environment specification vendor
# java.specification.name Java Runtime Environment specification name
# java.class.version Java class format version number
# java.class.path Java class path
# java.library.path List of paths to search when loading libraries
# java.io.tmpdir Default temp file path
# java.compiler Name of JIT compiler to use
# java.ext.dirs Path of extension directory or directories
# os.name Operating system name
# os.arch Operating system architecture
# os.version Operating system version
# file.separator File separator ("/" on UNIX)
# path.separator Path separator (":" on UNIX)
# line.separator Line separator ("/n" on UNIX)
# user.name User’s account name
# user.home User’s home directory
# user.dir User’s current working directory
JAVA中获取路径:
1.jsp中取得路径:
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
结果:/TEST
(3)得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /TEST/jsp/test.jsp
(4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
结果:D:/resin/webapps/TEST/test.jsp
(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:/resin/webapps/TEST
2.在类中取得路径:
(1)类的绝对路径:Class.class.getClass().getResource("/").getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:System.getProperty("user.dir")
结果:D:/TEST
3.在Servlet中取得路径:
(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
结果:E:/Tomcat/webapps/TEST
(2)得到IE地址栏地址:request.getRequestURL()
结果:
(3)得到相对地址:request.getRequestURI()
结果:/TEST/test
得到地址java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于得到地址数据长度、得到地址java的信息别忘了在本站进行查找喔。